ViVi Home > 技術文書 > ポインタ入門 > 動的配列クラス > reserve


 

 

C/C++ ポインタ入門 > 動的配列クラス > reserve
Nobuhide Tsuda
Jan-2014

reserve:

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

解説:

 


前: | 次: