//program 13.5.1.cpp 可變長動態陣列類
/*(1)陣列的元素個數可以在初始化該物件的時候指定。
(2)可以動態往陣列中新增元素。
(3)使用該類的時候不用操心動態記憶體分配、釋放問題
(4)能夠像使用陣列那樣來使用動態陣列類物件,如可以通過下標來訪問其元素。*/
#include
#include
using
namespace std;
/*//class carray可變長動態陣列類,陣列中儲存整形數*/
class
carray
//返回陣列元素個數
/*過載運算子:(是定義在類當中的做為成員函式的),可以直接訪問類的(私有)成員變數(指標變數ptr)*/
int&
operator
(int i)
/*返回引用型別,使之能夠作為左值.(作右值的話int和int & 都可以.)*/};
//class carray可變長動態陣列類.
/*析構函式
initial_constructor:申請s塊int型記憶體*/
carray::
carray
(int s)
:size
(s)//引數預設值在定義或者宣告出有一處說明即可,不要兩處都說明預設值.
//carray(int s){}
/*copy_constructor*/
carray::
carray
(carray & a)
ptr =
newint
[a.size]
;memcpy
( ptr, a.ptr,
sizeof
(int
)* a.size)
; size = a.size;
}//copy_constructor(carray &){}
/*destructor*/
carray::
~carray()
//~carray(){}
/*overload_operator_of_=*/
carray & carray::
operator=(
const carray & a)
/*如果a裡面的陣列是空的*/
if( a.ptr ==
null
) ptr =
null
; size =0;
return
*this;}
/*原有空間小於要求的大小,再做分配.*/
if( size < a.size)
/*然後分配新空間*/
ptr =
newint
[a.size];}
/*使"="左邊物件裡存放的陣列,大小和內容都和右邊的物件一樣*/
memcpy
( ptr,a.ptr,
sizeof
(int
)*a.size)
;/*用memcpy()代替strcpy()*/
size = a.size;
return
*this;}
/*在陣列尾部新增乙個元素*/
void carray::
push_back
(int v)
else
//陣列本來是空的
; ptr[size++
]= v;
//加入新的陣列元素;由於字元是乙個個追加到陣列尾部的,故size++即可;
}//在陣列尾部新增乙個元素
intmain()
carray a2,a3;
/*將a的內容深複製到a2中:*/
a2 = a;
/*列印複製的結果:*/
for(
int i =
0; i < a.
length()
;++i)
a2 = a3;
//a2又變成是空的
for(
int i =
0; i < a2.
length()
;++i)
返回0cout << endl;
/*單純列印換行.*/
a[3]
=100
;/*過載後的函式中,雖然return的表示式是ptr(為int*型別),但返回值型別被定義為引用型別int& 故也可以作為左值*/
carray a4
(a);
for(
int i =
0; i < a4.
length()
;++i)
return0;
}/*是雙目運算子6兩個運算元,乙個在裡面,乙個在外面。
表示式「a[i]」等價於「a.operator(i)」.
按照「」原有的特性,「a[i]」是應該能夠作為左值使用的,所以.
"operator」 這個函式應該返回引用型別.
*/
C 中的可變長陣列string
看乙個題目 編寫乙個程式,判斷乙個字串是否為 回文 順讀和倒讀都一樣的字串稱為 回文 include include using namespace std int main if s g else return 0 然而這個 並不能滿足要求,我們看到第10行的 這行 想按位倒序把字串s複製給字串g...
C 手把手教你實現可變長的陣列
假設我們要實現乙個會自動擴充套件的陣列,要實現什麼函式呢?先從下面的main函式給出的實現,看看有什麼函式是需要我們實現的。int main 輸出結果 0 1 2 3 4 0 1 2 100 4 要實現的方式,要做哪些事情呢?我先列一下 要實現乙個可變長陣列類的,基本需要實現下面的7個函式 clas...
C 二維陣列記憶體動態分配類以及函式過載
總時間限制 1000ms 記憶體限制 65536kb 在此處補充你的 描述 寫乙個二維陣列類 array2,使得下面程式的輸出結果是 0,1,2,3,4,5,6,7,8,9,10,11,next 0,1,2,3,4,5,6,7,8,9,10,11,程式 include include using n...