7

我正在尝试使用在 Android NDK 中定义的 hash_map,但我收到“弃用警告”:

ndk/sources/cxx-stl/gnu-libstdc++/4.6/include/ext/../backward/backward_warning.h:33:2:
error: #warning This file includes at least one deprecated or antiquated header which may 
be removed without further notice at a future date. Please use a non-deprecated interface 
with equivalent functionality instead. For a listing of replacement headers and 
interfaces, consult the file backward_warning.h. To disable this warning use -Wno-
deprecated. [-Werror=cpp]

而且由于“unordered_map”存在于 gnu-libstdc++/4.6/include/ 以及 gnu-libstdc++/4.6/include/tr1/ 中,我相信有一种使用它的方法。

关键是我找不到它。以下哪一项是正确的(如果有的话):

#include <tr1/unordered_map.h>

#include <unordered_map>

然后,如何使用它?__gnu_cxx::unordered_map 无法识别...而且我不知道如何找到此信息。

4

2 回答 2

5

如果您不想要/不需要 C++11 支持,您可以使用 STLPort 中的支持:

// Here we are referencing the stlport one:
#include <unordered_map>
...
std::tr1::unordered_map<int, int> test;

这是因为 STLPort在tr1命名空间内定义了unordered_map,但 STLPort 标头不在任何/tr1/文件夹内。

于 2013-12-08T12:11:21.063 回答
2

我最终通过在我的 Android 项目中添加 C++11 支持找到了一种方法。当我们知道它时很容易,但我花了一些时间来弄清楚。既不需要 STLPort 也不需要 Boost。集成 C++11 后,我可以使用“ unordered_map ”,如下所示:

#include <unordered_map>
...
std::unordered_map<int, int> test;

我在这里创建了一个新问题来解释如何在 Android 中启用 C++11 支持。

于 2013-03-22T07:09:55.517 回答