프로그래밍/c++ STL

[c++ STL] Map 기본 사용법 및 예제

rrruu 2020. 2. 3. 10:32
반응형

map은 key와 value의 쌍으로 이루어진 연관 컨테이너 입니다.

key는 순서를 지정하는데 사용되며 value는 key에 연결이 됩니다.

 

선언방법을 알아봅시다.

 

#include<map>

 

먼저 전처리기에 include를 해야합니다.

int형의 키와 stirng의 value를 저장하는

ts_map라는 이름의 map를 만든다고 한다면

 

map<int,string> ts_map;

 

이런식으로 선언을 하면 됩니다.

 

사용방법을 알아 봅시다.

 

key에 value를 연결하는 형식으로

값을 넣어주며 여러가지 방법이 있습니다.

기본적으로 insert를 사용하여 값을 넣어줄때에는

pair를 만들어주어서 삽입하는 방식이 있습니다.

ts_map.insert(make_pair(key,value));

pair를 직접 만들어서 삽입하는 방식도 있습니다.

ts_map.insert(pair<int,string>(key,value));

자동으로 키를 만들고 값을 넣어주는

방법도 있습니다.

ts_map[key] = value;

 

지우는방법도 여러가지 있습니다.

find를 사용하여 key값을 찾아서

삭제하는 방법입니다.

ts_map.erase(ts_map.find(key));

key값을 직접 입력하여 삭제하는 방법입니다.

ts_map.erase(key);

 

key의 데이터의 갯수를 확인하는 방법도 있습니다.

count를 사용하면 key의 데이터의 수를 반환 하게 됩니다.

cout<<ts_map.count(key);

 

map의 데이터를 전체 삭제하는 방법도 있습니다.

clear를 사용하면 모든 데이터가 삭제 됩니다.

ts_map.clear();

 

안의 데이터가 비어 있는지 확인하는 방법도 있습니다.

empty 사용하면 안의 데이터의 수를 반환 하게 됩니다.

if (ts_map.empty())

empty자체가 bool타입으로 반환값을 갖기 때문에

이런식으로 조건문으로 사용하시면 됩니다.

 

간단한 예제 입니다.

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

using namespace std;

int main()
{
	map<int, string> ts_map;

	ts_map[0] = "zero";
	ts_map[1] = "one";
	ts_map.insert(pair<int, string>(2, "two"));
	ts_map.insert(make_pair(3,"three"));

	cout <<"0의 count : "<< ts_map.count(0) << endl;

	for (auto it = ts_map.begin(); it != ts_map.end(); it++)
	{
		cout << it->first << "," << it->second << endl;
	}

	cout << "삭제" << endl;
	
	ts_map.erase(0);
	ts_map.erase(ts_map.find(1));

	cout << "0의 count : " << ts_map.count(0) << endl;

	for (auto it = ts_map.begin(); it != ts_map.end(); it++)
	{
		cout << it->first <<"," << it->second << endl;
	}

	ts_map.clear();

	if (ts_map.empty())
		cout << "empty!" << endl;



	return 0;
}

실행화면 입니다.

반응형