0
vector<double> v;
を定義すると、このベクトルは連続するメモリスロットを占有しますか?連続するメモリスロットを占有している場合、最後の要素の直後に十分なメモリスロットがないうちに、このベクトルに新しい要素を追加するとどうなりますか?C++では、ベクトルが連続するメモリスロットを占有しますか?
vector<double> v;
を定義すると、このベクトルは連続するメモリスロットを占有しますか?連続するメモリスロットを占有している場合、最後の要素の直後に十分なメモリスロットがないうちに、このベクトルに新しい要素を追加するとどうなりますか?C++では、ベクトルが連続するメモリスロットを占有しますか?
http://en.cppreference.com/w/cpp/container/vector
要素は、要素が要素への定期的なポインタにオフセットを使用してもだけでなくイテレータを介してアクセスすることができるが、つまり、連続して格納されています。
はい。要素が現在割り当てられている領域に収まらない場合、要素を再割り当てします。 – wally
これは連続ストレージと呼ばれ、ベクトルと配列の2つの標準コンテナが保証されています。 C++ 17では、この保証付きのイテレータを追加します:ContiguousIterator。 – jaggedSpire
そのような種類のストレージでは、O(1)の複雑さ(非常に高速)でそのようなデータ構造の要素を取り出すことができます。 – Spidey