繁体   English   中英

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

[英]std::multimap error when calling end()

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

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

原因是end不是静态方法,必须在您从中获得迭代器的对象上调用end

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

由于您已将tv初始化为

TagVal tv;

您必须按以下方式调用multimap类的end()函数:

it == tv.end()

因为end()是在该对象上调用的,所以它不是静态方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM