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
Patricia ArquetteOriginal
2024-12-30 12:18:09806Durchsuche

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().

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!

Stellungnahme:
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