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 중국어 웹사이트의 기타 관련 기사를 참조하세요!