【问题标题】:CDT Indexer cannot find std::unordered_mapCDT 索引器找不到 std::unordered_map
【发布时间】:2012-12-07 15:47:23
【问题描述】:

我的 Eclipse CDT 索引器显然找不到 std::unordered_map虽然编译器可以找到。它显示以下“错误”:

我的项目的“包含”文件夹如下所示:

如何告诉索引器如何找到std::unordered_map

【问题讨论】:

  • 您必须激活对 C++11 的支持。请参阅eclipse.org/forums/index.php/mv/msg/282618/787571 了解更多信息。
  • 那里描述的解决方案没有帮助。
  • 您的包含路径提到了已经过时的 gcc 4.2(关于 C++11 支持)。由于您使用 auto 关键字,我假设您的 gcc 版本至少为 4.4(gcc 的 C++11 支持表告诉 auto 是在 4.4 中添加的)。所以尝试根据最近的 gcc 的包含目录更改包含路径。

标签: c++ eclipse-cdt std unordered-map


【解决方案1】:

有关索引器-C++11-问题的一般解决方案,请参阅此问题的答案:Eclipse CDT indexer does not know C++11 containers

【讨论】:

    【解决方案2】:

    unordered_map 位于 std 的 tr1 命名空间下。

    所以你必须添加这个包含:

    #include <tr1/unordered_map>
    

    然后你可以用这种方式在 main 中声明你的变量:

    std::tr1::unordered_map<int,int> mapArray[10];
    

    【讨论】:

    • 没有了。 C++11 标准需要一个标头&lt;unordered_map&gt;,它声明std::unordered_map
    • 为什么代码正确编译使用#include &lt;unordered_map&gt;呢?这是索引器问题,而不是代码问题。
    • @aschepler,即使在 gcc 4.2 中?
    • @Barmaley.exe:不,我同意你的结论,即 OP 没有使用 g++ 4.2,因此在 g++ 4.2 包含目录中搜索 Eclipse 配置是错误的。
    【解决方案3】:

    我在 Ubuntu 12.10 上使用 Eclipse Juno CDT 和 gcc4.7 并定义了 std=c++11。索引器仍然对 unordered_map 发疯。添加 TR1 解决了这个问题。

    【讨论】:

      猜你喜欢
      • 2012-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-12
      • 2021-09-22
      • 1970-01-01
      相关资源
      最近更新 更多