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

 

+ Recent posts