STL マップ "[]" 演算子は、新しいエントリを挿入したり、既存のエントリを変更したりできます。
map<string, string> myMap;
myMap["key1"] = "value1";
myMap["key1"] = "value2";
STLマップで実装されたboost::bimapでコードを書き直しています。STL の "[]" 動作を維持する簡単な方法はありますか? 元の STL マップ コード (1 行!) を置き換えるには、7 行以下のコードを記述する必要があることがわかりました。
bimap<string, string>::left_iterator itr = myBimap.left.find("key1");
if (itr != myBimap.left.end()) {
myBimap.left.replace_data(itr, "value2");
}
else {
myBimap.insert(bimap<string, string>::value_type("key1", "value2"));
}
boost::bimap::insert_or_modify() のようなユーティリティ関数があるかどうか疑問に思っていました。