> 백엔드 개발 > C++ > `std::벡터`의 요소 저장소가 C에서 연속적이라는 것이 보장됩니까?

`std::벡터`의 요소 저장소가 C에서 연속적이라는 것이 보장됩니까?

Patricia Arquette
풀어 주다: 2024-12-30 12:18:09
원래의
795명이 탐색했습니다.

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

std::Vector 요소는 연속성이 보장됩니까?

C 98 표준은 std 내의 연속 요소를 명시적으로 보장하지 않습니다. :벡터, std::Vector에 대한 요구 사항으로 인해 요소가 연속되지 않을 가능성이 거의 없습니다. 그러나 이는 나중에 C 0x 표준의 n2798 초안에서 요구 사항으로 명확해졌습니다.

향후 C 0x 표준에는 다음 요구 사항이 포함됩니다.

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().
로그인 후 복사

이는 다음 예와 같이 std::Vector의 첫 번째 요소에 대한 포인터를 C 배열로 사용합니다.

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'
    }
}
로그인 후 복사

위 내용은 `std::벡터`의 요소 저장소가 C에서 연속적이라는 것이 보장됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿