c++ - sort - unordered_map push_back



map/unordered_map:find()を優先してからat()を優先するか、at()を試してくださいout_of_rangeをキャッチしますか? (1)

私は秘密の選択肢Cをお勧めします。

MyMapType::const_iterator iter = mymap.find(key);

if(iter != mymap.end())
{
    // iter is item pair in the map. The value will be accessible as `iter->second`.
}

C ++では、フロー制御に例外処理を使用することは慣用的ではありません。これは、2番目のコード例が行っていることです。 メンテナがコードを理解するのを難しくしますし、特定のコンパイラによってはそれがうまく機能しないかもしれません。

std::mapまたはstd::unordered_mapを使用するとき、コンテナ内にない可能性がある要素にアクセスするための望ましい方法は何ですか? 許可を求めるべきか、許しを求めるべきか? どうして?

あれは、

if (mymap.find(key) != mymap.end()) {
    value = mymap.at(key);
    // do stuff
}
else {
    // do something else
}

try {
    value = mymap.at(key);
    // do stuff
}
catch(const std::out_of_range& oor) {
    // do something else
}




unordered-map