簡體   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