2013-03-21 8 views
5

Ich versuche, eine hash_map im Android NDK definiert zu verwenden, aber ich erhalte eine "deprecation Warnung":Wie verwendet man 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] 

Und da "unordered_map" in vorhanden ist Gnu-libstdC++/4.6/include/und auch in gnu-libstdC++/4.6/include/tr1/glaube ich, dass es einen Weg gibt, es zu benutzen.

Der Punkt ist, dass ich es nicht finden kann. Welche der folgenden ist die richtige (falls vorhanden):

#include <tr1/unordered_map.h> 

#include <unordered_map> 

Und dann, wie man es benutzt? __gnu_cxx :: unordered_map wird nicht erkannt ... und ich weiß nicht, wie ich diese Informationen finden soll.

Antwort

2

Ich fand schließlich einen Weg, indem ich C++ 11 Unterstützung in meinem Android-Projekt hinzufügte. Ziemlich einfach, wenn wir es wissen, aber ich brauchte etwas Zeit, um es herauszufinden. Weder STLPort noch Boost wurden benötigt. Nach 11 C++ integriert wurde, konnte ich "unordered_map" wie folgt verwenden:

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

habe ich eine neue Frage zu erklären, wie here C++ 11-Unterstützung in Android ermöglichen.

5

Falls Sie nicht wollen/müssen C++ 11-Unterstützung, können Sie das eine vom STLPort können mit:

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

Das ist, weil STLPort unordered_map innerhalb tr1 Namensraum definiert, aber Der STLPort-Header befindet sich nicht in einem Ordner /tr1/.

Verwandte Themen