Я использую структуру данных карты STL, и в настоящий момент мой код сначала вызывает find(): если ключ ранее не был на карте, он вызывает insert(), иначе он ничего не делает.
map<Foo*, string>::iterator it;
it = my_map.find(foo_obj); // 1st lookup
if(it == my_map.end()){
my_map[foo_obj] = "some value"; // 2nd lookup
}else{
// ok do nothing.
}
Мне было интересно, есть ли лучший способ, чем это, потому что, насколько я могу судить, в этом случае, когда я хочу вставить ключ, которого еще нет, я выполняю 2 поиска в структурах данных карты: один для find(), один в insert() (что соответствует оператору []).
Спасибо заранее за любое предложение.