调用end()时std :: multimap错误

时间:2012-05-23 10:29:22

标签: c++ null iterator multimap

如何检查多图的元素是否存在? 使用此代码:

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&lt; ...&gt; :: iterator std :: multimap&lt; ...&gt; :: end()...   没有对象。

平台:Linux,GCC 4.5.1

2 个答案:

答案 0 :(得分:3)

原因是end不是静态方法,必须在你得到迭代器的对象上调用它:

if(it == tv.end())
    cerr << "Error";

答案 1 :(得分:1)

因为您已将tv初始化为

TagVal tv;

你必须调用multimap类的end()函数:

it == tv.end()

因为在该对象上调用end()并且它不是静态方法。