ベクターは、簡単に達成するために

テンプレート<型名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 ++の説明」

おすすめ

転載: www.cnblogs.com/airfy/p/12588549.html