티스토리 뷰
std::map 주의
- 2행 처럼 insert() 에 직접 int 값을 적용을 사용하면 주석처럼 컴파일 에러가 나므로
4, 5행 처럼 { } 나 make_pair() 를 사용해야 한다.
- 7 ~12행 처럼 at() 를 사용할때 해당 키에 대한 값이 없으면 예외 발생하므로 예외처리 해줘야 한다.
1
2
3
4
5
6
7
8
9
10
11
12 |
std::map<int, int> mmap;
mmap.insert(0, 1); // C2100 간접 참조가 잘목되었습니다. (xtree)
mmap.insert({ 1, 2 });
mmap.insert(std::make_pair(2, 3));
try {
int bb = mmap.at(10); // 키에 대한 값이 없으면 예외발생
}
catch (std::exception& e) {
return;
} |
cs |
- [] 연산자를 사용하면 해당 키값을 못찾아도 예외발생하지 않는다. 해당 키가 없으면 키가 map에 추가되어 map size 가 증가한다.
- 값을 수정할때는 3행처럼 [] 연산자로 처리한다.
1
2
3 |
std::map<int, int>* pmap = new std::map<int, int>;
pmap->insert({ 1, 2 }); //신규 추가
(*pmap)[1] = 22; // 수정 |
cs |
- std::map.clear() 호출 시 예외발생하면 map.size() 값이 맞는지 확인한다. 32GB 값을 갖기도 한다.