본문 바로가기
프로그래밍언어/C++

[C++]STL map 정리

by 연어바케트 2021. 10. 8.
반응형

1) Map 이란?

 특정 순서에 따라 키 값과 매핑된 값의 조합으로 형성된 요소를 저장하는 연관 컨테이너.
Key 와 value 쌍으로 이루어진 이진 트리 구조이다.

 

2) 헤더파일

#include<map>

 

3) 변수 선언

std::map<char, int> map_sample1;//map<key, value> 
std::map<char, int> map_sample2 = {{'A',10}, {'B',9} };

 

4) Map 추가

map_sample1.insert(std::make_pair('C', 8));
map_sample2['D'] = 7;
map_sample2.insert(std::pair<char, int>('E', 5));

 

5) Map 반복문 사용 및  출력 

for (auto iter = map_sample2.begin(); iter != map_sample2.end(); iter++)
{
	std::cout << iter->first << "  " << iter->second << std::endl;
}

 

6) Map 정렬

  Map은 자료 저장 시 자동으로 오름차순으로 정렬 된다. key 값을 기준으로 정렬

std::map<char, int, std::greater<char>> map_sample2 = { {'A',10}, {'B',9}, {'C', 16}, {'Z', 1}};

 greater를 사용함으로써 내림차순으로 정렬.

 

7) lower_bound, upper_bound

  lower_bound( k ): k를 포함하여 k 앞에 있는 첫번째 요소를 가리키고 해당 iterator 반환.

  upper_bound( k ) : k를 포함하지 않고 k의 뒤에 있는 첫번째 요소를 가리키고 해당 iterator 반환.

std::map<char, int> map_sample2 = { 
		{'A',10}, {'B',9}, {'C', 16},
        	{'E', 26}, {'F', 46}, {'K', 77}, 
       		{'Z', 1} };

std::cout << "----lower_bound ----" << std::endl;
auto iter = map_sample2.lower_bound('C');
std::cout << iter->first << "  " << iter->second << std::endl;

std::cout << "----upper_bound ----" << std::endl;
auto iter1 = map_sample2.upper_bound('F');
std::cout << iter1->first << "  " << iter1->second << std::en


참고 

c++ reference https://www.cplusplus.com/reference/map/map/

반응형

댓글