可変長配列クラスのint型へのC ++

/ ************************************************* *********************** 
*機能:1オブジェクトの初期化中に配列要素の数を指定することができる
* 2:遊びは、動的配列の要素を追加することができます
* 3:そのようなものの使用、動的メモリ割り当てについて心配しないで、剥離の問題が
4 *:アレイを使用することができる動的配列がクラスオブジェクトとして使用されるように、そのような要素は、インデックスによってアクセスすることができます。 
************************************************** ************************************************************ /


の#include <iostreamの> する#include <CStringの> 使用して 名前空間STD; クラスCArray- { プライベートint型のサイズ、 INT * PTR; 公共 CArray-(int型 S = 0 ); CArray-(のconstCARRAY&); 一back(int型V)。 CARRAY演算子 =(CONST CARRAY& )。 int型の長さ()。 INT演算子 [](int型I) { 戻りPTR [I]。 } CARRAY()。 }。 INT CARRAY ::長さ() { 戻りサイズ; } // CARRAY :: CARRAY(INT S = 0):サイズ(S) CARRAY :: CARRAY(int型秒):サイズ(S) { もし、(S == 0 PTR = NULL; 他の PTR = 新しい新しい INT [S]; } CARRAY-CArray- ::(CONST CARRAY-S&)// CONSTの注パラメータ、誤って変更防ぐ { IF(s.size == 0 { サイズ = 0を; PTR = NULL; 返す; } PTR = 新しい新しい INT [s.size]; のmemcpy(PTR、s.ptr、はsizeofINT)* s.size); サイズ =s.size; } ボイド CARRAY ::一back(INT V) { 場合(PTR) { INT * tempPtr = 新しい INT [サイズ+ 1 ]。 memcpyを(tempPtr、PTR、サイズ * はsizeofint型)); 削除[] PTRを。 PTR = tempPtr。 } PTR = 新しい INT [ 1 ]。 PTR [サイズ ++] = V。 } CARRAY&CARRAY :: 演算子 =(CONSTS&CArray-)// NOTEパラメータのconst。 { IF(s.ptr == PTR) リターン * この; IF(PTR)//が削除NULLポインタを防ぐために注意を払う必要があります 削除[] PTRを、 IF (s.ptr) { PTRは = 新しい新しい INT [s.size]; memcpyを(PTR、s.ptr、s.size * はsizeofINT )); サイズ = s.size; } そうでなければ { PTR = NULL; サイズ = 0 } 返す * これを } CARRAY ::CARRAY() { 場合(PTR) を削除[] PTR。 } int型のmain() { CARRAY。 以下のためにint型 i = 0 ; iは< 5 ; iは++ a.push_back(i)を、 // [0] = 11111。 // (I = 0 int型、iが(a.lengthを<); iが++)のため // COUT << [I] <<」「。 // coutの<< "AAAAの\ nを"; CARRAY A2、A3; A2 = ; 以下のためのint型 0I = ;私は(a.lengthを<); iは++ COUT << A2 [I] << " "を A2 =のA3を、 以下のためにint型私= 0 ; iがa2.lengthを()<; Iは++ COUT << A2 [I] << " " coutの << てendl; [ 3 ] = 100 CARRAYのA4(A)。 以下のためにint型 i = 0 ; i)は(a4.lengthを<; iは++ { COUT << A4 [I] << " " 0; }

 

おすすめ

転載: www.cnblogs.com/cq0143/p/11300859.html