2013-03-21 18 views
5

Sto cercando di usare un hash_map, definito nel NDK Android, ma ottengo un "avvertimento disapprovazione":Come usare unordered_map in 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] 

E poiché "unordered_map" è presente in GNU-libstdC++/4,6/include/e anche in gnu-libstdC++/4.6/include/tr1 /, credo che ci sia un modo per usarlo.

Il punto è che non riesco a trovarlo. Quale delle seguenti è quella giusta (se presente):

#include <tr1/unordered_map.h> 

#include <unordered_map> 

E quindi, come si usa? __gnu_cxx :: unordered_map non è riconosciuto ... e non so come trovare questa informazione.

risposta

2

Alla fine ho trovato un modo aggiungendo il supporto C++ 11 nel mio progetto Android. Piuttosto facile quando lo sappiamo, ma ho avuto un po 'di tempo per capirlo. Né STLPort né Boost erano necessari. Una volta che C++ 11 è stato integrato, potrei usare "unordered_map" come segue:

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

ho creato una nuova domanda per spiegare come abilitare C++ 11 supporto in Android here.

5

Nel caso in cui non si vuole/bisogno di C++ 11 di supporto, è possibile utilizzare l'uno dal STLPort utilizzando:

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

Questo perché STLPort definisce unordered_map all'interno TR1 spazio dei nomi, ma l'intestazione STLPort non si trova all'interno di alcuna cartella /tr1/.