C++ 在映射向量中查找对

C++ 在映射向量中查找对,c++,stl,map,vector,C++,Stl,Map,Vector,我正在使用下面的函数,试图在地图向量中查找地图元素的键 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()) { Entr

我正在使用下面的函数,试图在地图向量中查找地图元素的键

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;
    }


  }
}     
Entry*SymTab::lookup(const char*name)
{
对于(int i=0;等秒;
库特
有人看到这个问题了吗

是。
cur
不跟踪当前地图

尝试将
if
行替换为:

if (its != table.at(i).end())
有人看到这个问题了吗

是。
cur
不跟踪当前地图

尝试将
if
行替换为:

if (its != table.at(i).end())

什么是
cur
?如果不在每次循环迭代时更新它,它将无法识别元素何时不在那里。
const char*
的映射键几乎从来都不是一个好主意。键指向的内存是如何管理的?如果您希望它可读以避免将来出现此类问题,我会添加一些C++11 sugar:
条目*SymTab::lookup(const std::string&name)
for(auto&cur:table)//table是向量
auto-its=cur.find(name);
if(its!=cur.end())
{
coutWhat
cur
?如果不在每次循环迭代时更新它,这将无法识别元素何时不存在。使用
const char*
的映射键几乎从来都不是一个好主意。如何管理键指向的内存?如果您希望它可读以避免将来出现此类问题,我会添加一些C++11 sugar:
Entry*SymTab::lookup(const std::string&name)
for(auto&cur:table)//table是向量
if(its!=cur.end())
cout