[英]std::advance of std::multimap end() iterator by negative number crashes
[英]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.