テンプレート<型名OBJECT> クラスベクトル{ パブリック: 明示的なベクター(INT INITSIZE = 0):theSize(INITSIZE)、theCapacity(INITSIZE + SPARE_CAPACITY){ オブジェクト=新しいオブジェクト[theCapacity]。 } ベクター(CONSTベクトル&RHS):オブジェクト(NULL){ 演算子=(RHS)。 } 〜ベクトル(){削除[]オブジェクト。} ボイド演算子=(ベクトル&RHS CONST){ 場合(この=&RHSを!){ []オブジェクトを削除します。 theSize = rhs.theSize。 theCapacity = rhs.theCapacity。 オブジェクト=新しいオブジェクト[容量()]。 以下のために(INT iが= 0; iが<サイズ(); iが++) [I] = RHS [i]のオブジェクト。 } } ボイド準備(INT newCapacity){ もし(newCapacity> theCapacity){ オブジェクト* oldArray =オブジェクト。 オブジェクト=新しいオブジェクト[newCapacity]。 以下のために(INT iが= 0; iが<サイズ(); iが++) [I] = oldArray [i]のオブジェクト。 theCapacity = newCapacity。 [] oldArrayを削除します。 } } オブジェクト・オペレータ[](INTインデックス){ リターンオブジェクト[インデックス]。 } constオブジェクト&演算子[](INTインデックス)CONST { リターンオブジェクト[インデックス]。 } ()constは{空BOOL 戻りサイズ()== 0。 } int型のサイズ()constは{ 戻りtheSize。 } INT容量()constは{ 戻りtheCapacity。 } ボイド一back(constオブジェクト・オブジェクト){ IF(容量()==サイズ()){ リザーブ(2 * theCapacity + 1)。 } オブジェクト[theSize ++] =オブジェクト。 } ボイドpop_back(){ theSize--。 } constオブジェクト・バック()constは{ リターンオブジェクト[theSize - 1]。 } オブジェクトのtypedef *イテレータ。 constオブジェクトのtypedef * const_iteratorの。 反復子開始(){リターン・オブジェクト[0];} const_iteratorの開始()constは{リターン・オブジェクト[0];} 反復子端(){リターン・オブジェクト[サイズ()];} const_iteratorの端()constは{リターン・オブジェクト[サイズ( )];} 列挙{SPARE_CAPACITY = 16}。 プライベート: int型theSize。 int型theCapacity; オブジェクト*オブジェクト。 }。
コード「アルゴリズムとデータ構造分析:C ++の説明」