私はstd::vectors
最初にそれらの容量を設定し、push_back
ゆっくりとそれらを埋めるために使用することによって、たくさんを使用しています。これらのベクトルのほとんどは同じサイズ(16要素)になりますが、大きくなる場合もあります。push_back
サイズが0で容量が16のベクトルで最初に16回使用した場合、容量が正確に16になることを確認できpush_backs
ますか?
3 に答える
7
はい - 特定の容量を予約すると、設定した容量を超えるまでベクターは再割り当てされません1。再割り当てなしでプッシュできるアイテムの正確な数は指定されていませんが、少なくともその数は保証されています。
- 特に、ベクトルへのポインタとイテレータは、指定された容量を超えるまで有効であることが保証されています。
于 2013-02-15T17:32:18.597 に答える
2
うん。
23.3.6.3p6:
reserve()
の呼び出しの後に発生する挿入中は、挿入によってベクトルのサイズが の値よりも大きくなるまで、再割り当ては行われませんcapacity()
。
于 2013-02-15T17:36:49.867 に答える
2
23.3.6.5 [vector modifiers]
void push_back(const T& x);
void push_back(T&& x);
備考: 新しいサイズが古い容量より大きい場合、再割り当てが発生します。
かなり自明です。
于 2013-02-15T17:34:04.670 に答える