본문 바로가기

프로그래밍/C++

map

map 컨테이너

 : 연관 컨테이너 중 자주 사용하는 컨테이너로 원소를 keyvalue의 쌍으로 저장한다.

 

setmap의 차이

 : set은 원소로 key 하나만을 저장하지만, map은 원소로 key와 value의 쌍을 저장한다.

 

key는 중복으로 저장될 수 없으며 중복 key를 저장해야 한다면 multimap을 사용해야 한다.

 

map의 구조

 

map의 원소는 pair 객체로 저장된다.

 

pair 객체의 first 멤버 변수는 key, second 멤버 변수는 value이다.

 

insert() 멤버 함수는 pair 객체를 인자로 받아 map의 원소인 key와 value의 쌍을 저장한다.

 

#include <iostream>
#include <map>

using namespace std;

int main()
{
	map<int, int> m;

	m.insert(pair<int, int>(5, 100));
	m.insert(pair<int, int>(3, 100));
	m.insert(pair<int, int>(8, 30));
	m.insert(pair<int, int>(4, 40));
	m.insert(pair<int, int>(1, 70));
	m.insert(pair<int, int>(7, 100));

	pair<int, int> pr(9, 50);
	m.insert(pr);

	map<int, int>::iterator	iter;
	for (iter = m.begin(); iter != m.end(); ++iter)
		cout << "(" << (*iter).first << ", " << (*iter).second << ")" << " ";
	cout << endl;

	for (iter = m.begin(); iter != m.end(); ++iter)
		cout << "(" << iter->first << ", " << iter->second << ")" << " ";
	cout << endl;

	return 0;
}

출력 결과

 

insert() 멤버 함수의 반환 값을 출력해보자

#include <iostream>
#include <map>
using namespace std;

int main()
{
	map<int, int> m;
	pair<map<int, int>::iterator, bool> pr;

	m.insert(pair<int, int>(5, 100));
	m.insert(pair<int, int>(3, 100));
	m.insert(pair<int, int>(8, 30));
	m.insert(pair<int, int>(4, 40));
	m.insert(pair<int, int>(1, 70));
	m.insert(pair<int, int>(7, 100));

	pr = m.insert(pair<int, int>(9, 50));
	if (true == pr.second)
		cout << "key: " << pr.first->first << ", value: "
		<< pr.first->second << " 저장완료!" << endl;
	else
		cout << "key 9가 이미 m에 있다." << endl;

	pr = m.insert(pair<int, int>(9, 50));
	if (true == pr.second)
		cout << "key: " << pr.first->first << ", value: "
		<< pr.first->second << " 저장완료!" << endl;
	else
		cout << "key 9가 이미 m에 있다." << endl;

	return 0;
}

 

출력 결과

'프로그래밍 > C++' 카테고리의 다른 글

RTTI (Run Time Type Information)  (0) 2019.06.27
4가지 캐스팅  (0) 2019.06.26
list  (0) 2019.06.21
vector 1부  (0) 2019.06.20
vector의 간략한 소개  (0) 2019.06.20