Heim >Backend-Entwicklung >C++ >Sind std::vector-Elemente garantiert zusammenhängend?
Kontiguität von std::vector-Elementen
Es stellt sich die Frage, ob std::vector-Elemente garantiert zusammenhängend sind, was die Verwendung von ermöglicht der erste Elementzeiger des Vektors als C-Array. Trotz des Fehlens einer expliziten Garantie im C 98-Standard war es schwierig, die std::vector-Anforderungen ohne Angrenzung zu erfüllen.
Der C 0x-Standard hat dieses Versäumnis behoben, wie in n2798 angegeben:
"Ein Vektor ist ein Sequenzcontainer, der ... Elemente eines Vektors unterstützt, die zusammenhängend gespeichert werden. Das heißt, wenn v ein Vektor ist, bei dem T ein anderer Typ als bool ist, dann gehorcht es der Identität &v[n] == &v[0] n für alle 0 <= n <.
Dies bestätigt, dass std::vector-Elemente tatsächlich zusammenhängend gespeichert werden , was die Verwendung eines Zeigers auf das erste Element als C-Array ermöglicht:
std::vectorvalues; // ... fill up values if (!values.empty()) { int *array = &values[0]; for (int i = 0; i < values.size(); ++i) { int v = array[i]; // do something with 'v' } } Das obige ist der detaillierte Inhalt vonSind std::vector-Elemente garantiert zusammenhängend?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!