tuple 삽입 가져오기
//데이터 삽입 std::unordered_map <long, std::tuple< int, long, CString >> mapRank; mapRank[1000] = make_tuple(3, 5, "TEST"); //데이터 가져오기 for (auto info : mapRank) { std::tuple_element<0, decltype(info.second)>::type nRank = std::get<0>(info.second); std::tuple_element<1, decltype(info.second)>::type nCount = std::get<1>(info.second); std::tuple_element<2, decltype(info.second)>::type strTemp = std::get<2>(info.second); } std::tuple_element<0, decltype(mapRank[1000])>::type nRank = std::get<0>(mapRank[1000]); std::tuple_element<1, decltype(mapRank[1000])>::type nCount = std::get<1>(mapRank[1000]); std::tuple_element<2, decltype(mapRank[1000])>::type strTemp = std::get<2>(mapRank[1000]); |
tuple 정렬
#define TRIPLE_PAIR std::pair<long, std::tuple< int, long, CString >> bool CompareRank(const TRIPLE_PAIR& a, const TRIPLE_PAIR& b) { //if (a.second.second == b.second.second) return a.second < b.second; std::tuple_element<1, decltype(a.second)>::type nNum1 = std::get<1>(a.second); std::tuple_element<1, decltype(b.second)>::type nNum2 = std::get<1>(b.second); return nNum1 > nNum2; } void CalcRank() { std::unordered_map <long, std::tuple< int, long, CString >> mapRank mapRank[1000] = make_tuple(3, 5, "TEST"); //정렬 std::vector <TRIPLE_PAIR> vecTemp(mapRank.begin(), mapRank.end()); sort(vecTemp.begin(), vecTemp.end(), CompareRank); //해당 분류결함의 순위와 개수 찾기 for (int i = 0; i < vecTemp.size(); i++) { std::tuple_element<1, decltype(vecTemp[i].second)>::type nTemp = std::get<1>(vecTemp[i].second); int nRank = nTemp; } } |
Pair 삽입 가져오기
//데이터 삽입 std::unordered_map<long, std::pair<int, long>> mapRank; mapRank.clear(); mapRank[1000] = make_pair(0,0); //데이터 가져오기 int nRank = mapRank[1000] .first; long lCount = mapRank[1000] .second; |
Pair 정렬
#define DOULBE_PAIR std::pair<long, std::pair<int, long>> bool Compare(const DOULBE_PAIR& a, const DOULBE_PAIR& b) { //if (a.second.second == b.second.second) return a.second < b.second; return a.second.second > b.second.second; } void CalcRank() { std::unordered_map<long, std::pair<int, long>> mapRank; mapRank.clear(); mapRank[1000] = make_pair(0,0); //분류별 결함 정렬 std::vector <DOULBE_PAIR> vecTemp(mapRank.begin() , mapRank.end()); sort(vecTemp.begin(), vecTemp.end(), Compare); for (int i = 0 ; i < vecTemp.size(); i++) { int nRank = vecTemp[i].second.first; long lCount = vecTemp[i].second.second; } } |
참조 : https://psychoria.tistory.com/entry/C-11-stdpair%EB%A5%BC-%ED%99%95%EC%9E%A5%ED%95%9C-stdtuple
'공부 > MFC_자주쓸거' 카테고리의 다른 글
[MFC] DateTimePicker 값 설정하기 (0) | 2024.06.04 |
---|---|
[MFC] ::FindWindow 윈도우 클래스 설정 (0) | 2023.12.20 |
[MFC] 파일열기 대화상자 CFileDialog (0) | 2023.03.30 |
[MFC] Queue 초기화 (0) | 2023.03.22 |
[MFC] CStdioFile txt 파일 읽기 쓰기 (0) | 2022.12.07 |