Heim > Backend-Entwicklung > C++ > Ist der Elementspeicher von „std::vector' in C garantiert zusammenhängend?

Ist der Elementspeicher von „std::vector' in C garantiert zusammenhängend?

Patricia Arquette
Freigeben: 2024-12-30 12:18:09
Original
852 Leute haben es durchsucht

Is `std::vector`'s Element Storage Guaranteed to Be Contiguous in C  ?

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().
Nach dem Login kopieren

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'
    }
}
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage