ホームページ > バックエンド開発 > C++ > C では、`std::vector` の要素ストレージは連続していることが保証されていますか?

C では、`std::vector` の要素ストレージは連続していることが保証されていますか?

Patricia Arquette
リリース: 2024-12-30 12:18:09
オリジナル
816 人が閲覧しました

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

Are std::vector Elements Delivered to Be Contiguous?

C 98 標準では、std 内の連続要素が明示的に保証されていませんでした。 :vector、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'
    }
}
ログイン後にコピー

以上がC では、`std::vector` の要素ストレージは連続していることが保証されていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート