0
我使用以下函數試圖在地圖向量中查找地圖元素的關鍵點。在地圖向量中查找對
Entry* SymTab::lookup(const char* name)
{
for (int i=0;i<table.size();i++) //table is the vector
{
map<const char*, Entry, ltstr>::iterator its= table.at(i).find(name);
if (its != cur.end())
{
Entry* obj = &its->second;
cout<<(*its).first<<endl;
return obj;
}
}
}
該函數可以正確返回第一個向量索引(at(0))內的任何項目的值。但是,只要我嘗試訪問第二個索引內的元素(在(1))就會出現段錯誤。我確定地圖已經正確插入並填充在第二個索引處。
有沒有人在這裏看到這個問題?
什麼是'cur'?如果在每次循環迭代時都不更新它,則無法識別何時不存在元素。 – leftaroundabout 2012-04-09 16:33:27
'const char *'的映射鍵幾乎不是一個好主意。內存是如何管理的關鍵點? – Chad 2012-04-09 16:36:12
如果你希望它在將來可以避免這種麻煩,我會添加一些C++ 11糖:'Entry * SymTab :: lookup(const std :: string&name)' '''' ' (auto&cur:table)//表格是矢量' '{' 'auto它= cur.find(name); '' 如果(!其= cur.end())'' {'' COUT <<(*其)。首先<< ENDL;'' 返回&的─>第二;'' }'' }' '}' – leftaroundabout 2012-04-09 16:39:34