Mit c++11 unordered_map Typen auf mac os x

Bin ich auf MAC OS X 10.8.4 installiert haben und gcc durch das herunterladen von XCode und die command line tools-Paket. Hier ist mein gcc:

Using built-in specs.
Target: i686-apple-darwin11
Configured with: /private/var/tmp/llvmgcc42/llvmgcc42-2336.11~182/src/configure --disable-checking --enable-werror --prefix=/Applications/Xcode.app/Contents/Developer/usr/llvm-gcc-4.2 --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-prefix=llvm- --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --with-slibdir=/usr/lib --build=i686-apple-darwin11 --enable-llvm=/private/var/tmp/llvmgcc42/llvmgcc42-2336.11~182/dst-llvmCore/Developer/usr/local --program-prefix=i686-apple-darwin11- --host=x86_64-apple-darwin11 --target=i686-apple-darwin11 --with-gxx-include-dir=/usr/include/c++/4.2.1
Thread model: posix
gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)

Ich versuche, die neue unordered_map aus der tr1-namespace:

using namespace std;
#include <tr1/unordered_map>

template<class T>
class A 
{
    tr1::unordered_map<T, int> * mymap;
    .....
    //key is of type T and value is of type int
    mymap->at(key) = value;
}

Aber die Linie, wo ich bin Zugriff auf das map-element mit at nicht kompilieren. Ich bin immer der folgende Fehler:

error: 'class std::tr1::unordered_map<int, int, std::tr1::hash<int>, std::equal_to<int>, std::allocator<std::pair<const int, int> >, false>' has no member named 'at'

Ich verstehe nicht ganz, dieses, da die C++ - Referenz enthält eine Funktion namens at um den Zugriff auf die einzelnen Elemente der Karte. Ich habe versucht, einen Blick in die header-Dateien, die die map-Erklärung (auf meinem system ist es auf /usr/include/c++/4.2.1/tr1/unordered_map) und überraschend genug, es nicht enthalten ein Element mit dem Namen at.

Ich verstehe, dass ältere Compiler möglicherweise nicht die Unterstützung der neuen c++11-Bibliotheken in der std namespace, aber ich habe in der Lage gewesen, einige der anderen neuen Bibliotheken von tr1 namespace. In der Tat, ich kann andere Funktionen nutzen der unordered_map wie find, insert etc. Nur das Mitglied at fehlt.

Wie kann ich diese zusammengestellt? Sollte ich ein upgrade auf eine neuere compiler? Ich sehe nicht ein, den neuen Compiler für mac os x leicht. Sollte ich bauen es von Grund auf neu?

InformationsquelleAutor Venkat | 2013-08-31

Schreibe einen Kommentar