¿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í .