android c++ c++11 hashmap unordered-map

¿Cómo usar unordered_map en Android?



c++ c++11 (2)

Estoy tratando de usar un hash_map, definido en el NDK de Android, pero recibo una "advertencia de obsolescencia":

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]

Y dado que "unordered_map" está presente en gnu-libstdc ++ / 4.6 / include / y también en gnu-libstdc ++ / 4.6 / include / tr1 /, creo que hay una manera de usarlo.

El punto es que no puedo encontrarlo. ¿Cuál de los siguientes es el correcto (si corresponde)?

#include <tr1/unordered_map.h> #include <unordered_map>

Y luego, ¿cómo usarlo? __gnu_cxx :: unordered_map no se reconoce ... y no sé cómo encontrar esta información.


En caso de que no desee / necesite la compatibilidad con C ++ 11, puede usar la del STLPort usando:

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

Esto se debe a que STLPort define unordered_map dentro del espacio de nombres tr1 , pero el encabezado STLPort no está dentro de ninguna carpeta / tr1 / .


Finalmente encontré la forma de agregar compatibilidad con C ++ 11 en mi proyecto de Android. Bastante fácil cuando lo sabemos, pero me tomé un tiempo para resolverlo. Ni STLPort ni Boost fueron necesarios. Una vez que se haya integrado C ++ 11, podría usar " unordered_map " de la siguiente manera:

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

Creé una nueva pregunta para explicar cómo habilitar el soporte de C ++ 11 en Android aquí .