2011年2月3日木曜日

C++ std::map を利用する際に、挿入させたいキーの重複確認



std::map を利用する際に、挿入させたいキーが既に登録されているかどうかを判定させる。
findを用いても可能だが、insert時もfind しているので冗長である。

#include <iostream>
#include <map>

int main() {
std::map<std::string, int> map_;
typedef std::map<std::string, int>::iterator iter_;
std::pair<iter_, bool> result;

result = map_.insert( std::make_pair("hoge1", 5) );
std::cout<<result.second<<std::endl; ← 1

result = map_.insert( std::make_pair("hoge2", 10) );
std::cout<<result.second<<std::endl; ← 1

result = map_.insert( std::make_pair("hoge1", 5) );
std::cout<<result.second<<std::endl; ← 0

return 0;
}