我正在尝试使用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无法识别...我不知道如何找到这些信息。
答案 0 :(得分: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 / 文件夹中。
答案 1 :(得分:2)
我最终通过在Android项目中添加C ++ 11支持找到了一种方法。当我们知道它时很容易,但我花了一些时间才弄明白。既不需要STLPort也不需要Boost。集成C ++ 11后,我可以使用“ unordered_map ”,如下所示:
#include <unordered_map>
...
std::unordered_map<int, int> test;
我创建了一个新问题来解释如何在Android here中启用C ++ 11支持。