2

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

这是一台 Centos 4 机器。

4

2 回答 2

3

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

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

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

于 2012-01-28T16:50:22.530 回答
0

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 容器?

于 2012-01-29T00:05:59.383 回答