1. ホーム
  2. c++

[解決済み】STLのマップでは、[]よりもmap::insertを使う方が良いのか?]

2022-04-12 03:55:41

質問

少し前に、同僚とSTLの値を挿入する方法について議論しました。 地図 . 私は map[key] = value; は自然な感じで読みやすいのですが、彼は map.insert(std::make_pair(key, value)) .

ただ、なぜ挿入したほうがいいのか、二人とも理由を覚えていないのですが、単にスタイルの好みではなく、効率性など技術的な理由があったことは確かです。その SGI STLリファレンス 厳密に言えば、このメンバ関数は不要であり、便宜上存在するのみである。

誰かその理由を教えてください。それとも、そんなものがあると夢想しているだけなのでしょうか?

解決方法は?

と書くと

map[key] = value;

かどうかはわからない 代わり映えしない その value にとって key または、もしあなたが 作成された しんきん key をもって value .

map::insert() が作成されるだけです。

using std::cout; using std::endl;
typedef std::map<int, std::string> MyMap;
MyMap map;
// ...
std::pair<MyMap::iterator, bool> res = map.insert(MyMap::value_type(key,value));
if ( ! res.second ) {
    cout << "key " <<  key << " already exists "
         << " with value " << (res.first)->second << endl;
} else {
    cout << "created key " << key << " with value " << value << endl;
}

私のほとんどのアプリでは、通常、作成か置き換えかを気にしないので、読みやすい方の map[key] = value .