Nav*_*K N 9 c++ enums map standard-library
我有一些使用问题std::map
:
enum
在std::map
一个良好的实践中使用一个关键?请考虑以下代码:
enum Shape{
Circle,
Rectangle
};
int main(int argc, char* argv[])
{
std::map<Shape,std::string> strMap;
// strMap.insert(Shape::Circle,"Circle"); // This will not compile
strMap[Shape::Circle] = "Circle"; // But this will work
return 0;
}
Run Code Online (Sandbox Code Playgroud)在上面的示例中,为什么insert()
在重载[]
运算符正常工作时调用生成编译器错误?建议将哪些方法插入到std::map
?
我知道当在类find()
上使用该方法时std::map
,它不是在容器中进行顺序搜索,而是进行一些对数搜索,这将比顺序搜索快得多.这种理解是否正确?
gim*_*mpf 12
std::vector
使用O(1)访问会更好.insert
必须像这样使用:mapVar.insert(make_pair(key, value));
另见cppreference.com.std::map
具有O(log(n))查找,由标准保证,如果n足够高,则比O(n)快.