+) auto 키워드 :: 선언된 변수의 초기화 식을 사용하여 해당 형식을 추론하도록 컴파일러에게 지시한다. 즉, auto 키워드를 사용하면 초깃값의 형식에 맞춰 선언하는 인스턴스(변수)의 형식이 자동으로 결정된다. 이것을 타입 추론(type inference)라고 한다.
pair<iterator,bool> insert (const pair<const Key, Type>& val);
리턴값으로 pair를 톨려준다.
insert 결과 | 첫번째(iterator) | 두번째(bool) | 언제 발생 |
---|---|---|---|
성공 | insert되어진 element의 iterator | true | 중복된 Key가 존재 하지 않을때 |
실패 | 중복된 Key의 element의 iterator | false | 중복된 Key가 존재 할때 |
insert를 한다는 것도 내부적으로 insert할 위치를 찾아간다.
잘못된 예제)
std::map<int, std::string> temp;
auto itr = temp.find(1);
if (itr == temp.end())
{
temp.insert({ 1, "number 1" });
}
else
{
itr->second = "number 1";
}
정확한 사용법)
std::map<int, std::string> temp;
auto ret = temp.insert({ 1, "number 1" });
if (!ret.second)
{
ret.first->second = "number 1";
}
operator[]를 호출하는 순간 insert가 발생한 다는 것을 알고 있어야 한다.
(1)
void erase (iterator position);
(2)
size_type erase (const key_type& k);
(3)
void erase (iterator first, iterator last);
(1) iterator을 사용한 삭제
(2) key값을 사용한 삭제
(3) iterator 범위를 사용한 삭제
iterator find (const key_type& k);
size_type count (const key_type& k) const;
operator !=
: map 개체가 우변에 있는 map 개체와 같지 않은지 테스트, map 개체 간의 비교는 해당 요소의 쌍비교를 기반으로 한다. 포함된 요소 수가 같고 개별 요소의 값이 같으면 두 map은 같은 것.. 그렇지 않으면 같지 않은 것.
operator <
: map 개체 간의 비교는 해당 요소의 쌍 비교를 기반으로 한다. 두 개체 간의 보다 작음 관계는 같지 않은 요소의 첫 번째 쌍 비교를 기반으로 한다.
operator!= (multimap)
: 연산자의 조변에 있는 multimap 개체가 우변에 있는 multimap 개체와 같지 않은지 테스트, multimap 개체 간의 비교는 해당 요소의 쌍 비교를 기반으로 한다. 포함된 요소 수가 같고 개별 요소의 값이 같으면 두 multimap은 같은 것. 그렇지 않으면 목록은 같지 않은 것.
...
+) map
+) multimap