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 标准需要一个标头<unordered_map>
,它声明std::unordered_map
。
为什么代码正确编译使用#include <unordered_map>
呢?这是索引器问题,而不是代码问题。
@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++]