C++ vector resizeとreserveの違い:メモリ管理を解説
C++において、vectorのresize()とreserve()関数はどちらもvectorのサイズを調整するために使用されますが、重要な違いがあります。
- resize()関数は、ベクトル内の要素の数を調整し、新しいサイズを指定することができます。新しいサイズが現在のサイズより大きい場合は、新しい要素が追加され、値が初期化されます。新しいサイズが現在のサイズより小さい場合は、余分な要素が削除されます。resize()関数は、ベクトルのサイズを変更し、ベクトルのcapacityを変更する可能性があります。
- reserve()関数は、vectorの容量を予め確保するために使われますが、vectorのサイズを変更するわけではありません。reserve()関数を呼び出すと、vectorのcapacityが増加しますが、sizeは変わりません。これにより、要素を挿入する際のメモリ再割り当て回数を減らし、パフォーマンスを向上させることができます。
総括すると、resize()関数は通常、vectorのサイズを調整するために使用され、reserve()関数はメモリ割り当てのパフォーマンスを最適化するために使用されます。