使用 C++0x 的 unordered_map

发布于 2024-11-06 13:19:20 字数 236 浏览 0 评论 0原文

我正在使用 unordered_map ,它包含为: #include 程序编译如下: g++ Test.cc -std=gnu++0x -o 测试 我使用的是TR1 的unordered_map 还是C++0x 的unordered_map。或者两者是一样的吗?

I am using an unordered_map which is included as:
#include <unordered_map>
and the program is compiled as follows:
g++ Test.cc -std=gnu++0x -o test
Am I using the unordered_map of TR1 or that of C++0x. Or is it both the same?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

不再让梦枯萎 2024-11-13 13:19:20

我相信 gcc 将其 TR1 标头放入 中,因此您应该获得 C++11 版本。但它们非常相似。

I believe gcc puts their TR1 headers in <tr1/unordered_map>, so you should be getting the C++11 version. But they are very similar.

红衣飘飘貌似仙 2024-11-13 13:19:20

GCC 在 tr1 子目录中有 tr1 头文件。另外还有 tr1 命名空间。

#include <tr1/unordered_map>
...
std::tr1::unordered_map<...>(...);

因此,除非您专门做了这些事情或做了类似的“使用”,否则您已经得到了标准的。

这些实现是分开的,但它们非常相似。存在足够多的差异(初始化列表、比较操作),使得维护一个包含所有条件和宏的文件变得很痛苦。

GCC has tr1 headers in tr1 subdirectory. Plus there is the tr1 namespace.

#include <tr1/unordered_map>
...
std::tr1::unordered_map<...>(...);

So unless you specifically did these things or did a similar "using" you've got the std ones.

The implementations are split but they are rather similar. There were just enough differences (initializer_list, comparison ops) to make maintenance of one file with all the conditionals and macros a pain.

攒眉千度 2024-11-13 13:19:20

这在很大程度上取决于特定的编译器版本。例如,GCC 4.4 基本上只是为您的 -std=c++0x 选项提供了一些宏开关,以适当地进行名称空间标记,但最终总是会从 tr1_impl/ 中提取实际代码unordered_map,而 GCC 4.6 有两种完全独立的实现,一种在 tr1/unordered_map.h 中,另一种在 bits/unordered_map.h 中-- 并且 .../hashtable.h 中各自的基类实现实际上有所不同; C++0x 版本到处都有 std::forward 等。

简短的回答:这取决于情况。

This depends very much on the particular compiler version. For instance, GCC 4.4 basically just had some macro switches for your -std=c++0x option to do the namespace labelling appropriately, but would always end up pulling the actual code from tr1_impl/unordered_map, while GCC 4.6 has two entirely separate implementations, one in tr1/unordered_map.h and one in bits/unordered_map.h -- and the respective base class implementations in .../hashtable.h do in fact differ; the C++0x version has std::forwards everywhere etc.

Short answer: It depends.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文