使用find重新生成STL Map检查条目

Ven*_*ta 1 c++ stl

我正在关注计划

typedef std::map<std::string, CRTSLogManager*> FileNameToStorageClass;
FileNameToStorageClass  m_mapFileNameToLogStorage;
map<string, void*>::iterator iter;
iter =m_mapFileNameToLogStorage.find(cFileName);

if(iter == m_mapFileNameToLogStorage.end())
{
   typedef std::pair<std::string, CRTSLogManager*> FileNameToStorageClassPair;
   string strFilename = "MyFile";
   CRTSLogManager *pLogManager = new CRTSLogManager();
   m_mapFileNameToLogStorage.insert(
      FileNameToStorageClassPair(strFilename, pLogManager));
}
Run Code Online (Sandbox Code Playgroud)

我在编译时遇到以下错误,这与==签入条件有关.

在'iter ==((CRTSLogManagerReal*)this)中没有匹配'operator ==' - > CRTSLogManagerReal :: m_mapFileNameToLogStorage.std :: map,std :: allocator>,CRTSLogManager*,std :: less,std :: allocator >>,std :: allocator,std :: allocator>,CRTSLogManager*>> ::.std :: _ Tree <_Traits> :: end with _Traits = std :: _ Tmap_traits,std :: allocator>,CRTSLogManager*,std: :less,std :: allocator >>,std :: allocator,std :: allocator>,CRTSLogManager*>>,false>'

San*_*nto 5

你正在声明一个迭代器

std::map <string, void *>
Run Code Online (Sandbox Code Playgroud)

但你试图比较一个迭代器

std::map< std::string, CRTSLogManager*>
Run Code Online (Sandbox Code Playgroud)

它们不兼容.