Heim >Backend-Entwicklung >C++ >Ist der Elementspeicher von „std::vector' in C garantiert zusammenhängend?
Sind std::vector-Elemente garantiert zusammenhängend?
Während der C 98-Standard nicht ausdrücklich zusammenhängende Elemente innerhalb eines std garantiert: :vector, die Anforderungen für std::vector machten es höchst unwahrscheinlich, dass die Elemente nicht zusammenhängend waren. Dies wurde jedoch später im n2798-Entwurf des C 0x-Standards als Anforderung klargestellt.
Der kommende C 0x-Standard enthält die folgende Anforderung:
A vector is a sequence container that supports random access iterators. In addition, it supports (amortized) constant time insert and erase operations at the end; insert and erase in the middle take linear time. Storage management is handled automatically, though hints can be given to improve efficiency. The elements of a vector are stored contiguously, meaning that if v is a vector where T is some type other than bool, then it obeys the identity &v[n] == &v[0] + n for all 0 <= n < v.size().
Das bedeutet, dass Sie sicher können Verwenden Sie den Zeiger auf das erste Element eines std::vector als C-Array, wie im folgenden Beispiel:
std::vector<int> values; // ... 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 vonIst der Elementspeicher von „std::vector' in C garantiert zusammenhängend?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!