【问题标题】:How to get headers for unordered_set in gcc v4.1.2?如何在 gcc v4.1.2 中获取 unordered_set 的标头?
【发布时间】:2012-01-28 16:14:31
【问题描述】:

我想在不安装 Boost 的情况下使用 unordered_set。我尝试添加--std=gnu++0x,但它不是一个公认的选项。 v4.1.2 是否包含 unordered_set?如果是这样,我如何获取它的头文件?

这是一台 Centos 4 机器。

【问题讨论】:

标签: c++ gcc header-files tr1 unordered-set


【解决方案1】:

unordered_set 属于标准 C++ 库,而不是编译器 gcc(尽管大多数使用 gcc 构建的程序都链接到 libstdc++)。

通常包含它的方式是#include <tr1/unordered_set>。然后,要使用它,您必须每次都输入using std::tr1::unordered_set; 或限定名称。

您选择使用的 C++ 标准版本没有太大影响,因为那是 语言 标准,并且标准库结构的可用性是半独立的。

【讨论】:

  • 我尝试了编译器找不到的正常包含。这在 v4.1.2 上对您有用吗?
  • unordered_setlibstdc++ 的权限范围内, glibc。而libstdc++ 本身实际上是 GCC 的一部分。所以,嗯,其实和编译器有很大关系,和glibc无关。
  • @Fanael 我真的应该说“标准库”。我会改变它。而且您实际上可以构建与备用库链接的 C++ 程序,信不信由你。
  • @Borealid:我不相信。但说真的,OP 使用备用库而不知道它是否以及在哪里有 unordered_set 的可能性有多大?
【解决方案2】:

IIRC,gcc-4.2 至少在命名空间 std 中没有无序容器。我知道 -std=c++0x 直到 gcc-4.3 左右才到位。

你试过这个吗:

#include <tr1/unordered_set>
...
  std::tr1::unordered_set<int> usint;
...

注意标题中的 tr1/。

话虽如此,gcc-4.1 已经很老了。您是否有机会尝试说 gcc-4.5 或 4.6 并使用 std 容器?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-05
    • 2020-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多