Frage

Ich experimentiere gerade mit boost :: Pool Wenn es eine schnelleren Allocator für Sachen zu sehen, mit mir arbeite, aber ich kann nicht herausfinden, wie es zu benutzen mit boost :: unordered_map:

Hier ist ein Code-Snippet:

unordered_map<int,int,boost::hash<int>, fast_pool_allocator<int>> theMap;   
theMap[1] = 2;

Hier wird der Compiler-Fehler erhalte ich:

Fehler 3 Fehler C2064: Ausdruck ergibt keine Funktion unter 2 Argumente C: \ Program Files (x86) \ boost \ boost_1_38 \ boost \ ungeordnete \ Detail \ hash_table_impl.hpp 2048

Wenn ich die Verwendung der Karte kommentieren, z.B. "TheMap [1] = 2" wird der Compiler-Fehler weggeht.

War es hilfreich?

Lösung

Es sieht aus wie Sie einen Template-Parameter fehlen .

template<typename Key, typename Mapped, typename Hash = boost::hash<Key>, 
     typename Pred = std::equal_to<Key>, 
     typename Alloc = std::allocator<std::pair<Key const, Mapped> > > 

Der vierte Parameter ist das Prädikat für einen Vergleich, der fünfte der Zuordner ist.

unordered_map<int, int, boost::hash<int>,
     std::equal_to<int>, fast_pool_allocator<int> > theMap;

Auch, aber wahrscheinlich nicht die Ursache für das Problem, müssen Sie die beide ‚>‘ am Ende der Vorlage Instanziierung trennen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top