2013-03-21 10 views
5

Próbuję użyć hash_map, zdefiniowaną w Android NDK, ale dostać "ostrzeżenie dezaprobata":Jak korzystać z opcji unordered_map w systemie Android?

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] 

A ponieważ "unordered_map" jest obecny w gnu-libstdC++/4,6/include /, a także w gnu-libstdC++/4.6/include/tr1 /, wierzę, że jest sposób na jego wykorzystanie.

Chodzi o to, że nie mogę go znaleźć. Który z poniższych jest właściwy (jeśli jest):

#include <tr1/unordered_map.h> 

#include <unordered_map> 

A następnie, jak z niego korzystać? __gnu_cxx :: unordered_map nie jest rozpoznawany ... i nie wiem, jak znaleźć tę informację.

Odpowiedz

2

W końcu znalazłem sposób, dodając obsługę C++ 11 w moim projekcie Android. Dość łatwo, kiedy o tym wiemy, ale poświęciłem trochę czasu, aby to rozgryźć. Ani STLPort ani Boost nie były potrzebne. Gdy C++ 11 został zintegrowany, mogę użyć "unordered_map" w następujący sposób:

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

I stworzył nowe pytanie o wyjaśnienie, jak włączyć C++ 11 wsparcie w Androidzie here.

5

W przypadku, gdy nie chcą/potrzebują wsparcia C++ 11, można użyć jednego z STLport używając:

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

to dlatego STLport definiuje unordered_map wewnątrz TR1 nazw, ale nagłówek STLPort nie znajduje się w żadnym folderze /tr1/.

Powiązane problemy