C++ベクトルのreserve()メソッドの用途は何か
Vectorクラスのreserve()メソッドでは、将来的な挿入操作による不必要な再割り当てや要素のコピーを回避するために、ある程度のメモリ領域を事前に確保できます。構文は次のとおりです。
void reserve(size_type n);
ここで、n は予約された要素数であり、size_type は vector クラスで定義された符号なし整数型である。
reserve() 関数を使うと、ベクターの領域を事前に確保することができますが、ベクターのサイズは変更されません。挿入される要素の数が現在確保されている領域を超えると、ベクターは自動的に領域を再確保します。
reserve()関数の主な利点は、ベクトルに要素を挿入する際のメモリの再割り当てを削減し、挿入効率を向上させることです。十分なメモリ領域を事前に確保することで、頻繁なメモリ割り当てとコピー操作を回避し、時間とリソースを節約できます。
reserve()関数の使い方は次のとおりです。
#include <iostream>
#include <vector>
int main() {
std::vector<int> myVector;
// 预留10个元素的内存空间
myVector.reserve(10);
// 插入元素
for (int i = 0; i < 20; i++) {
myVector.push_back(i);
}
// 输出元素数量和容量
std::cout << "Size: " << myVector.size() << std::endl;
std::cout << "Capacity: " << myVector.capacity() << std::endl;
return 0;
}
本結果はネイティブによる表現であり、唯一の選択肢を必要とします。
Size: 20
Capacity: 20
insertで20個の要素を加えてもベクトルの容量が確保されている10個を超えないのは、reserve()関数があらかじめ十分なメモリ領域を確保しておき、メモリの再割り当てのオーバーヘッドを避けているためです。