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 が新しい領域を指すように設定 }
解説:
前: | 次: