Ich erkläre eine Zuordnung von String zu einem Paar wie folgt:
%Vor%Und ich initialisiere es als:
%Vor%Visual C ++ gibt mir jedoch den Fehler "C2664, kein Konstruktor konnte den Quelltyp übernehmen, oder die Überladungsauflösung des Konstruktors war mehrdeutig".
Ich bin neu in der Verwendung von Vorlagen und STL und kann nicht sagen, was ich falsch mache.
Der >>>
kann nicht korrekt analysiert werden (es sei denn, Sie haben einen C ++ 0x Compiler).
Ändern Sie zu > > >
Dies:
%Vor%Sollte sein:
%Vor%Außerdem gibt es eine Dienstprogrammfunktion, die die Konstruktion von Paaren vereinfacht:
%Vor%Kann sein:
%Vor%Versuchen Sie Folgendes:
%Vor% map::insert
selbst nimmt ein einzelnes Argument std::pair
anstelle von zwei Argumenten. Sie können den Code aufräumen, indem Sie std::make_pair
verwenden (was die Argumente der Vorlage von den Funktionsargumenten ableitet), um etwas wie folgt zu erhalten:
Sie könnten Ihren Code vereinfachen, indem Sie eine Hilfsfunktion zum Erstellen von Paaren von Paaren erstellen, analog zur std::make_pair
-Helferfunktion, die in der Standardbibliothek verfügbar ist. Auch die Verwendung der Karten operator[]
für die Einfügung führt zu besser lesbarem Code: