Map
맵(Map)은 set, multiset, multimap등과 같이 STL이 제공하는 자료형 중 하나이다.
원소를 key 와 value의 쌍으로 저장한다.
set은 원소로 key 하나만을 저장하지만, map 은 원소로 key와 value의 쌍(pair 객체)를 저장한다.
또한 삽입과 동시에 정렬이 된다. 그리고 저장공간의 필요에 따라서 allocator 객체를 사용하므로 동적할당한다.
먼저 <map> 라이브러리를 선언한 후에 map<key type,value type> 으로 map 컨데이너 객체를 생성 하면 된다.
접근 방식은
-
iterator를 사용한 접근.
map<key type,value type> ::iterator iter_name ; 선언 후
iter_name ->first , iter_name ->second 같은 형식으로 접근 가능하다.
-
인덱스 요소를 이용한 접근.
이 있다
요소 추가 는
- map_name.insert(make_pair(key_name,value_name));
- map_name[key_name] = value_name;
데이터 중복확인
1.find(data)
= data: 찾고 싶은 키
return 값:
- key를 찾은 경우: element의 iterator
- key를 못 찾은 경우 :
map::end
1
2
3
4
5
if ( m.find("f") == m.end() ) {
// not found
} else {
// found
}
- count(data)
원래 count()
는 원소가 몇 개인지 세는 함수이지만 std::map
container의 원소들은 하나하나가 다 고유(unique)한 값이기 때문에 key
가 존재하면 1
을, 존재하지 않으면 0
을 return 한다.
데이터 확인 예제
map<int,string> m; //key(index),value(data)
int i,n;
cin >> n;
for(i=1;i<=n;i++){
string temp;
cin >> temp;
m.insert(make_pair(i,temp));
}
map<int,string>::iterator iter; //반복자 (접근위해 필요)
for(iter=m.begin();iter != m.end();iter++){
cout << iter->first << "::" << iter->second << "\n";
}