当前位置:  开发笔记 > 编程语言 > 正文

使用std :: map时这些适当的做法是什么?

如何解决《使用std::map时这些适当的做法是什么?》经验,为你挑选了2个好方法。

我有一些使用问题std::map:

    enumstd::map一个良好的实践中使用一个关键?请考虑以下代码:

    enum Shape{
        Circle,
        Rectangle
    };
    
    int main(int argc, char* argv[])
    {
         std::map strMap;
         // strMap.insert(Shape::Circle,"Circle"); // This will not compile
         strMap[Shape::Circle] = "Circle";         // But this will work
         return 0;
    }
    

    在上面的示例中,为什么insert()在重载[]运算符正常工作时调用生成编译器错误?建议将哪些方法插入到std::map

    我知道当在类find()上使用该方法时std::map,它不是在容器中进行顺序搜索,而是进行一些对数搜索,这将比顺序搜索快得多.这种理解是否正确?

gimpf.. 12

    将枚举作为key_type本身并不坏.(编辑)但是如果你只使用顺序枚举值,那么std::vector使用O(1)访问会更好.

    insert必须像这样使用:mapVar.insert(make_pair(key, value)); 另见cppreference.com.

    是的,std::map具有O(log(n))查找,由标准保证,如果n足够高,则比O(n)快.


Alan.. 5

插入失败,因为value_type是std :: pair



1> gimpf..:

    将枚举作为key_type本身并不坏.(编辑)但是如果你只使用顺序枚举值,那么std::vector使用O(1)访问会更好.

    insert必须像这样使用:mapVar.insert(make_pair(key, value)); 另见cppreference.com.

    是的,std::map具有O(log(n))查找,由标准保证,如果n足够高,则比O(n)快.



2> Alan..:

插入失败,因为value_type是std :: pair

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有