我正在使用以下功能,试图在地图矢量中查找地图元素的键。
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))中任何项目的值。但是,每当我尝试访问第二个索引(at(1))中的元素时,它都会出现段错误。我确定已正确插入地图并在第二个索引处进行了填充。
有人在这里看到这个问题吗?
最佳答案
有人在这里看到这个问题吗?
是。 cur
不跟踪当前地图。
尝试将if
行替换为:
if (its != table.at(i).end())