V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Dreammilk
V2EX  ›  C++

c++的 map 问题

  •  
  •   Dreammilk · 2021-01-02 17:09:43 +08:00 · 2435 次点击
    这是一个创建于 1182 天前的主题,其中的信息可能已经有所发展或是发生改变。

    c++中 map.contrains 函数有人用过吗
    在使用时显示不存在此方法,难道是 c++版本不对

    #include <iostream> #include <map>

    int main() { std::map<int,char> example = {{1,'a'},{2,'b'}};

    if(example.contains(2)) {
        std::cout << "Found\n";
    } else {
        std::cout << "Not found\n";
    }
    

    }

    10 条回复    2021-01-03 11:38:31 +08:00
    qianlv7
        1
    qianlv7  
       2021-01-02 17:12:51 +08:00
    Dreammilk
        2
    Dreammilk  
    OP
       2021-01-02 17:19:07 +08:00
    @qianlv7 那在 c++11 中判断关键字只能使用 find 或者 count 两种方法了吗
    zwy100e72
        3
    zwy100e72  
       2021-01-02 18:22:01 +08:00
    #2 是的
    YouLMAO
        4
    YouLMAO  
       2021-01-02 18:50:54 +08:00 via Android
    这不是红黑树么,contain 不给你也是合理的
    irytu
        5
    irytu  
       2021-01-02 21:13:32 +08:00 via iPhone
    @YouLMAO 这个 contain 跟底层数据结构有关系吗,contain 查找也是遍历吧
    clrss
        6
    clrss  
       2021-01-02 21:23:54 +08:00
    自己写个模版函数包装一下..
    YouLMAO
        7
    YouLMAO  
       2021-01-02 21:34:41 +08:00 via Android
    @irytu 啊啊啊啊啊,红黑树,二分查找,unorderedmap 的话哈希

    没有一个是遍历
    irytu
        8
    irytu  
       2021-01-02 22:28:54 +08:00 via iPhone
    @YouLMAO hh sorry 引起歧义 其实我意思也是查找 or 搜索,我习惯说遍历而已,只是有点疑惑你说的行为“不给你结果” 跟二叉树搜索的关系
    lovestudykid
        9
    lovestudykid  
       2021-01-02 22:37:30 +08:00
    你拼写错了..试了使用最新版的 gcc 能够编译
    g++ -std=c++2a
    typetraits
        10
    typetraits  
       2021-01-03 11:38:31 +08:00 via iPhone
    libc++中 contains()就实现为 find(xxx) != end(),libstdc++就不清楚了
    所以直接用 find 就可以了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4993 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 09:38 · PVG 17:38 · LAX 02:38 · JFK 05:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.