반응형
Map 기본 연산
map의 원소는 pair 객체로 저장되며 pair 객체의 first 멤버 변수는 key로 second 멤버 변수는 value이다.
- map<key,value> : key와 value를 pair 형태로 선언
함수 목록
- begin() : beginning iterator 반환
- end() : end iterator 반환
- insert( make_pair(key,value) ): 맵에 원소를 pair 형태로 추가
- erase(key) : 맵에서 key에 해당하는 원소 삭제
- clear() : 맵의 원소들 모두 삭제
- find(key) : key(키값)에 해당하는 iterator를 반환
- count(key) : key(키값)에 해당하는 원소들(value들)의 개수를 반환
※ map에서는 중복을 허용하지 않기 때문에 1 또는 0 반환
- empty() : 맵이 비어있으면 true 아니면 false를 반환
- size() : 맵 원소들의 수를 반환
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main(){
map<string, int> m;
// 추가
m.insert(make_pair("a", 1));
m.insert(make_pair("b", 2));
m["c"] = 3;
m.insert(make_pair("d", 4));
// 삭제
m.erase("b");
m.erase(m.find("c"));
// empty(), size()
if(!m.empty())
cout << "size: " << m.size() << endl;
// key를 통해 value 찾기
cout << "[a] value : " << m.find("a")->second << endl;
// count(key)
cout << "[a] count : " << m.count("a") << '\n';
// 탐색
map< string, int >::iterator it;
for(it = m.begin(); it != m.end(); it++){
cout << "key : " << it->first << " " << "value : " << it->second << '\n';
}
}
map에 key가 존재여부 확인
: 단순히 확인만 하는 경우에는 find()보다는 count()가 좀 더 유연.
#include <iostream>
#include <map>
#include <string>
using namespace std;
typedef struct {
string kor;
int num;
}fruit;
int main(){
map<string, fruit> m;
fruit f1 = {"사과", 5};
fruit f2 = {"오렌지", 3};
m.insert(make_pair("apple", f1));
m.insert(make_pair("orange", f2));
// 바나나 존재 유무 확인
// 찾지 못한다면 m.end()에 해당하는 iterator 반환
if(m.find("banana") == m.end()){
cout << "바나나 존재 X" << endl;
}
else{
cout << "바나나 존재 O" << endl;
cout << "바나나 개수: " << (m.find("banana")->second).num << endl;
}
// 사과 존재 유무 확인
if(m.count("apple")){
cout << "사과 존재 O" << endl;
cout << "사과 개수: " << (m.find("apple")->second).num << endl;
}
else{
cout << "사과 존재 X" << endl;
}
}
Reference
- [해시] Hash Open Address 기법 구현
관련 문제
반응형
'프로그래밍 언어 > C++' 카테고리의 다른 글
[C++] 상속(inheritance)이란? (0) | 2021.07.04 |
---|---|
[C++] lower_bound, upper_bound 사용해보기 (0) | 2021.05.16 |
[C++] [STL] Stack (0) | 2021.02.28 |
[C++] [STL] Queue (0) | 2021.02.28 |
[C++] 기본 입출력 (0) | 2021.02.28 |
댓글