CDT 索引器找不到 std::unordered_map

Posted

技术标签:

【中文标题】CDT 索引器找不到 std::unordered_map【英文标题】:CDT Indexer cannot find 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 的包含目录更改包含路径。 【参考方案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 解决了这个问题。

【讨论】:

以上是关于CDT 索引器找不到 std::unordered_map的主要内容,如果未能解决你的问题,请参考以下文章

在 std::unordered_set<const char *> 中找不到转换为 const char * 的 std::string

std::unordered_map 如何表现? [C++]

Qt - std::unordered_map - 销毁时间

unordered_map 查找数组的索引

ld 链接器找不到 so 库

Composer 自动加载器找不到类