5

std::map を使用した繰り返しパターンがあります。

キーが存在する場合にのみ値を取得したいのですが、それ以外の場合は要素を挿入したくありません。現在、私はcount(key)orを使用しfind(key)ています (どちらが優れていますか?ドキュメントから複雑さは同じようです)。それらが正の値を返す場合、マップにアクセスします。ただし、マップ上で 2 つの操作を使用することは避けたいと思います。何かのようなもの:

map<string, int> myMap;
int returnvalue;
boole result = myMap.get("key1",returnValue)
if(result){
  \\ use returnValue
}

cplusplus.comの std::map ドキュメントを読んで、マップ要素にアクセスするための 2 つの関数を見つけました。

  • at() : キーが存在しない場合に例外をスローします
  • [] : キーが存在しない場合に新しい値を挿入します

それらのどれも私の必要性を満たしていません。

4

2 に答える 2

0

count()キーが存在することを確認してから、k/vペアを取得するために使用しfind()ます

if (myMap.count(key))
{
    auto it = myMap.find(key)
}
else
{
// not found
}
于 2013-10-10T08:38:20.283 に答える