Dreammilk
V2EX  ›  C++

c++的 map 问题

  •  
  •   Dreammilk · Jan 2, 2021 · 3307 views
    This topic created in 1955 days ago, the information mentioned may be changed or developed.

    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 replies    2021-01-03 11:38:31 +08:00
    qianlv7
        1
    qianlv7  
       Jan 2, 2021
    Dreammilk
        2
    Dreammilk  
    OP
       Jan 2, 2021
    @qianlv7 那在 c++11 中判断关键字只能使用 find 或者 count 两种方法了吗
    zwy100e72
        3
    zwy100e72  
       Jan 2, 2021
    #2 是的
    YouLMAO
        4
    YouLMAO  
       Jan 2, 2021 via Android
    这不是红黑树么,contain 不给你也是合理的
    irytu
        5
    irytu  
       Jan 2, 2021 via iPhone
    @YouLMAO 这个 contain 跟底层数据结构有关系吗,contain 查找也是遍历吧
    clrss
        6
    clrss  
       Jan 2, 2021
    自己写个模版函数包装一下..
    YouLMAO
        7
    YouLMAO  
       Jan 2, 2021 via Android
    @irytu 啊啊啊啊啊,红黑树,二分查找,unorderedmap 的话哈希

    没有一个是遍历
    irytu
        8
    irytu  
       Jan 2, 2021 via iPhone
    @YouLMAO hh sorry 引起歧义 其实我意思也是查找 or 搜索,我习惯说遍历而已,只是有点疑惑你说的行为“不给你结果” 跟二叉树搜索的关系
    lovestudykid
        9
    lovestudykid  
       Jan 2, 2021
    你拼写错了..试了使用最新版的 gcc 能够编译
    g++ -std=c++2a
    typetraits
        10
    typetraits  
       Jan 3, 2021 via iPhone
    libc++中 contains()就实现为 find(xxx) != end(),libstdc++就不清楚了
    所以直接用 find 就可以了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   977 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 20:35 · PVG 04:35 · LAX 13:35 · JFK 16:35
    ♥ Do have faith in what you're doing.