void Vector::reserve(int sz)
{
if( sz <= capacity() ) return; // 既に sz 以上のキャパシティがある場合
while( m_capacity < sz )
m_capacity *= 2; // キャパシティ >= sz になるまで、キャパシティを倍々していく
int *data = new int[m_capacity]; // 新しいデータ領域を確保
for (int i = 0; i < m_size; ++i) {
data[i] = m_data[i]; // 古いデータ領域の内容を新しい領域にコピー
}
delete [] m_data; // 古いデータ領域を解放
m_data = data; // m_data が新しい領域を指すように設定
}
解説:
前: | 次: