ALL,Gibt es einen sortierten Container in AWL
Gibt es einen sortierten Container in STL? Was ich meine, ist folgendes:
Ich habe ein Std :: Vector wo Foo ist eine maßgeschneiderte Klasse. Ich habe auch einen Vergleicher, der die Felder der Klasse Foo vergleicht.
Nun, irgendwo in meinem Code ich tue:
std::sort(myvec.begin(), myvec.end(), comparator);
, die den Vektor nach den Regeln sortieren werde ich in den Komparator definieren.
Jetzt möchte ich ein Element der Klasse Foo in diesem Vektor einfügen. Wenn ich könnte, würde Ich mag nur schreiben:
mysortedvector.push_back(Foo());
und was passieren würde, ist, dass der Vektor dieses neue Element gesetzt wird entsprechend dem Komparator an seinem Platz.
Stattdessen jetzt muß ich schreiben:
myvec.push_back(Foo());
std::sort(myvec.begin(), myvec.end(), comparator);
, die nur eine Verschwendung von Zeit, da der Vektor bereits sortiert ist und alles, was ich brauche, ist in geeigneter Weise das neue Element zu platzieren.
Jetzt kann ich wegen der Art meines Programms nicht std :: map <> als ich habe keine Schlüssel/Wert-Paare, nur ein einfacher Vektor.
Wenn ich stl :: list benutze, muss ich nach jedem Einfügen erneut sortieren aufrufen.
Vielen Dank für Ihre Vorschläge.
Was ist 'std :: Set' erstellen? – us2012
Wenn Sie wüssten, wohin es gehen würde, könnten Sie insert() – james82345
@ us2012 verwenden, schaute ich auf std :: set.Problem ist, dass das Objekt in einem Gitter dargestellt wird, wo der Benutzer sie basierend auf allen Klassenmitgliedern sortieren und sie so modifizieren kann, wie sie es für richtig halten. Da std :: set Mitglieder per Definition konstant sind, ist dieser Container nicht für mich. – Igor