0

マルチマップの要素が存在するかどうかを確認するにはどうすればよいですか?
このコードで:

typedef std::multimap<std::string, std::string> TagVal;
TagVal tv;
//... add values to tv ...
TagVal::const_iterator it = tv.find("abc");
if(it == TagVal::end())    // <--- ERROR
    cerr << "Error";

次のコンパイル時エラーが発生します。

エラー:メンバー関数'std :: multimap <...> :: iterator std :: multimap <...> :: end()...をオブジェクトなしで呼び出すことはできません。

プラットフォーム:Linux、GCC 4.5.1

4

2 に答える 2

3

その理由はend、静的メソッドではなく、イテレータを取得したオブジェクトで呼び出す必要があるためです。

if(it == tv.end())
    cerr << "Error";
于 2012-05-23T10:33:08.443 に答える
1

あなたがとして初期化tvしたので

TagVal tv;

マルチマップクラスのend()関数を次のように呼び出す必要があります。

it == tv.end()

end()はそのオブジェクトで呼び出され、静的メソッドではないためです。

于 2012-05-23T10:35:22.240 に答える