개발/C++

std::unordered_map 정렬하기

njsung 2022. 10. 6. 20:55
반응형
SMALL

std::unordered_map

  • map보다 더 빠른 탐색을 위한 자료구조
  • 해쉬테이블로 구현한 자료구조
    • O(1)의 시간복잡도를 가짐
    • Map의 경우 O(log n)의 시간복잡도를 가짐
  • #include <unordered_map>을 선언하면 사용 가능
  • std::pair<key type, value type>으로 구성되며 key가 유사한 데이터가 많으면 성능이 떨어짐

 

728x90

 

unordered_map 정렬하기

  • 각 Value로 정렬한 후 출력을 진행하는 간단한 로직
#include <unordered_map>
#include <algorithm>

void main()
{
	std::unordered_map<std::string, int> _map;
    _map.insert({"a",1});
    _map.insert({"b",4});
    _map.insert({"c",3});
    _map.insert({"d",2});
    
    //use vector for sorting
    std::vector<std::pair<std::string, int>> sortingArray(_map.begin(), _map.end());
    
    std::cout << "Before Sorting" << std::endl;
    for(auto& data : sortingArray)
    {
        std::cout << data.first << ", " << data.second << std::endl;
    }
    
    std::sort(sortingArray.begin(), sortingArray.end(), 
        [](std::pair<std::string,int>& a, std::pair<std::string,int>& b)
        {
        	//value 기준 정렬
			return a.second < b.second;		// value 오름차순 정렬
            return a.second > b.second;		// value 내림차순 정렬
            
            //key 기준 정렬
            return a.first < b.first;		// key 오름차순 정렬
            return a.first > b.first;		// key 내림차순 정렬
        });
        
    std::cout << "After Sorting" << std::endl;
    for(auto& data : sortingArray)
    {
        std::cout << data.first << ", " << data.second << std::endl;
    }
}
  • 결과화면

Result Console

 

 

반응형