Als «stl» getaggte Fragen

Die Standard Template Library (STL) ist eine C ++ - Bibliothek mit generischen Containern, Iteratoren, Algorithmen und Funktionsobjekten. Wenn C ++ standardisiert wurde, wurden große Teile der STL in die Standardbibliothek übernommen, und diese Teile in der Standardbibliothek werden manchmal auch fälschlicherweise gemeinsam als "STL" bezeichnet.


6
Wie gebe ich einen Zeiger auf eine überladene Funktion an?
Ich möchte eine überladene Funktion an den std::for_each()Algorithmus übergeben. Beispielsweise, class A { void f(char c); void f(int i); void scan(const std::string& s) { std::for_each(s.begin(), s.end(), f); } }; Ich würde erwarten, dass der Compiler nach f()dem Iteratortyp aufgelöst wird. Anscheinend macht es das (GCC 4.1.2) nicht. Wie kann ich …
137 c++  stl 

5
C ++ Doppeladressenoperator? (&&)
Ich lese STL-Quellcode und habe keine Ahnung, was der &&Adressoperator tun soll. Hier ist ein Codebeispiel von stl_vector.h: vector& operator=(vector&& __x) // <-- Note double ampersands here { // NB: DR 675. this->clear(); this->swap(__x); return *this; } Ist "Adresse der Adresse" sinnvoll? Warum gibt es zwei Adressoperatoren anstelle von nur …

3
Was passiert, wenn Sie erase () für ein Kartenelement aufrufen, während Sie von Anfang bis Ende iterieren?
Im folgenden Code durchlaufe ich eine Karte und teste, ob ein Element gelöscht werden muss. Ist es sicher, das Element zu löschen und weiter zu iterieren, oder muss ich die Schlüssel in einem anderen Container sammeln und eine zweite Schleife ausführen, um erase () aufzurufen? map<string, SerialdMsg::SerialFunction_t>::iterator pm_it; for (pm_it …
133 c++  stl  iterator 


2
Wie setze ich die Anfangsgröße von std :: vector?
Ich habe eine vector<CustomClass*>und ich habe viele Elemente in den Vektor eingefügt und ich benötige einen schnellen Zugriff, daher verwende ich keine Liste. Wie stelle ich die Anfangsgröße des Vektors ein (z. B. 20.000 Stellen, um das Kopieren beim Einfügen eines neuen zu vermeiden)?
130 c++  stl 

7
Warum gibt std :: queue :: pop keinen Rückgabewert aus?
Ich habe diese Seite durchgesehen, kann aber den Grund dafür nicht ermitteln. Dort wird das erwähnt "Es ist sinnvoller, überhaupt keinen Wert zurückzugeben und von Clients zu verlangen, dass sie front () verwenden, um den Wert an der Vorderseite der Warteschlange zu überprüfen." Um ein Element von front () aus …
123 c++  stl 




13
remove_if-Äquivalent für std :: map
Ich habe versucht, eine Reihe von Elementen aus der Karte zu löschen, basierend auf einer bestimmten Bedingung. Wie mache ich das mit STL-Algorithmen? Anfangs dachte ich an die Verwendung, remove_ifaber es ist nicht möglich, da remove_if für assoziative Container nicht funktioniert. Gibt es einen äquivalenten "remove_if" -Algorithmus, der für die …
118 c++  stl  map 


4
Überladen von std :: swap ()
std::swap()wird von vielen Standardcontainern (wie std::listund std::vector) beim Sortieren und sogar beim Zuweisen verwendet. Die Standardimplementierung von swap()ist jedoch sehr verallgemeinert und für benutzerdefinierte Typen eher ineffizient. Somit kann Effizienz durch Überladen std::swap()mit einer benutzerdefinierten typspezifischen Implementierung erzielt werden. Aber wie können Sie es implementieren, damit es von den Standardcontainern …

5
C ++ - Kartenzugriff verwirft Qualifizierer (const)
Der folgende Code besagt, dass beim Übergeben der Karte an constdie operator[]Methode Qualifizierer verworfen werden: #include <iostream> #include <map> #include <string> using namespace std; class MapWrapper { public: const int &get_value(const int &key) const { return _map[key]; } private: map<int, int> _map; }; int main() { MapWrapper mw; cout << …
113 c++  stl  const  maps 

9
Was ist die bevorzugte / idiomatische Methode zum Einfügen in eine Karte?
Ich habe vier verschiedene Möglichkeiten zum Einfügen von Elementen in a identifiziert std::map: std::map<int, int> function; function[0] = 42; function.insert(std::map<int, int>::value_type(0, 42)); function.insert(std::pair<int, int>(0, 42)); function.insert(std::make_pair(0, 42)); Welcher davon ist der bevorzugte / idiomatische Weg? (Und gibt es einen anderen Weg, an den ich nicht gedacht habe?)
111 c++  stl  insert  stdmap  std-pair 

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.