You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

g++13.1.0下unordered_map::contains报错,求排查解决方案

问题原因与解决方法

报错的核心原因是:仅修改c_cpp_properties.json不会影响实际编译行为——这个文件只是给VS Code提供语法提示用的,g编译时依然需要显式指定C20及以上的标准版本,才能识别contains方法(该方法在C++20中引入)。

具体解决步骤

  • 编译命令添加标准参数
    直接用g++编译时,必须加上-std=c++20或-std=c++23参数,示例命令:

    g++ -std=c++20 your_code.cpp -o output.exe
    

    g默认不会启用C20及以上标准,即使编译器版本支持,不指定参数会沿用旧标准编译,导致contains被识别为未定义成员。

  • VS Code用户需配置tasks.json
    如果用VS Code的任务编译,要在tasks.json的编译参数里加入-std=c++20,示例配置片段:

    {
        "args": [
            "-fdiagnostics-color=always",
            "-std=c++20", // 新增这一行
            "-g",
            "${file}",
            "-o",
            "${fileDirname}\\${fileBasenameNoExtension}.exe"
        ]
    }
    
  • 临时替代方案
    要是暂时无法调整编译配置,可以用find方法实现相同逻辑:

    if (count.find(i) != count.end())
        cout << i << ": Found\n";
    else
        cout << i << ": Not found\n";
    

内容的提问来源于stack exchange,提问作者Mini-Touch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 19:52:43