[알고리즘] 문제풀이 연습

[C++] map 컨테이너

ddgoori 2019. 11. 3. 16:44
// map 컨테이너

/*

- 연관 컨테이너 중 하나
- 노드 기반으로 이루어져 있는 '균형 이진 트리 구조'
- Map은 Key와 value로 이뤄져있으며 pair 객체 형태로 저장됨
- Unique Key : key는 고유한 값이므로 중복이 불가능
- *단, multimap은 중복 key가 가능
- Ordered : map도 set과 마찬가지로 삽입이 되면서 자동 정렬됨
- *default 는 오름차순
- Allocater-aware: map container는 저장공간의 필요에 따라 allocater객체 사용
- = 동적할당 한다는 말


*/

#include <iostream>
#include <map>
#include <string>

using namespace std;

int main() {

	//생성

	map<int, int> m1;
	map<string, int> m2;

	//map에 삽입 하기위한 insert는 pair객체를 인자로 받아야 한다.
	//key값과 value는 쌍을 이루기 때문이다.

	m1.insert(pair<int, int>(10, 20));
	m2.insert(pair<string, int>("dahae", 28));

	m1[10] = 20; // m[key] = value; 이렇게도 원소 추가 및 수정 가능

	// 기본 insert, 순회 접근방법

	map<int, string> m;

	m.insert(pair<int, string>(0, "dahae"));
	m.insert(pair<int, string>(1, "suzy"));
	m.insert(pair<int, string>(2, "dalgun"));

	map<int, string>::iterator iter;

	//접근방법 1
	for (iter = m.begin(); iter != m.end(); iter++) {
		cout << iter->first << "," << iter->second << endl;
	}
	
	cout << endl;

	//접근방법 2
	for (iter = m.begin(); iter != m.end(); iter++) {
		cout << (*iter).first << "," << (*iter).second << endl;
	}

	cout << endl;

	//사이즈 출력 : 3
	cout << "map의 사이즈 : " << m.size() << endl;

	return 0;
}