根据我的推断, std::map::find() 方法通过比较指针地址而不是值来搜索地图。例子:
std::string aa = "asd";
const char* a = aa.c_str();
const char* b = "asd";
// m_options is a std::map<const char*, int )
m_options.insert( std::make_pair( a, 0 ) );
if( m_options.find( b ) != m_options.end() ) {
// won't reach this place
}
我有点惊讶(因为我使用的是原始类型而不是某些类)并且我认为我做错了什么,如果不是那么如何强制它使用值而不是地址?