1

[ ] 演算子を使用して std::unordered_map の要素にアクセスすると、新しい要素が挿入されます。

std::unordered_map<std::string, uint32_t> umap = {
    {"Thomas", 1},
    {"Frank", 5},
    {"Lisa", 7}
};

// umap.size() is 3
uint32_t id = umap["Lisa"];
// umap.size() is 3
id = umap["Randy"]; // key "Randy" doesn't exist
// umap.size() is 4

私は単純に [ ] 演算子が右側の代入なしで読み取り専用で動作すると想定していました。count()キーにアクセスする前に、キーが存在するかどうかを確認するfind()必要がありますか、または代替手段はありますか?

4

2 に答える 2

1

find()または以外count()の代替手段は、at()存在しない場合に例外をスローするメソッドです。

于 2014-04-10T20:53:53.363 に答える