template <class Type> Type Array<Type>: :operator [l(int i)i ∥按数组名及标i。取数组元素的值 if (i<o li> Array Size-1) cerr<< " Index out of Range"<< endl; return elementi; 使用该函数于赋值语句 Positioni]- Position[i-1+ Number[i-1
template <class Type> Type & Array<Type>::operator [ ] ( int i ) { //按数组名及下标i,取数组元素的值 if ( i < 0 || i > ArraySize-1 ) cerr << "Index out of Range" << endl; return element[i]; } 使用该函数于赋值语句 Position[i] = Position[i -1] + Number[i -1]
template <class Type> void Array<Type>: Resize (int sz)( if sz >=0 & sz != Array Size )( ype x newarray= new Type[] if newarray==0) cerr<<"Memory Allocation Error< endl; int n=( S2<= Array Size ) Sz: Array Size; Type srcptr=elements Type destptr= newarray while(n-)米 destptr++=米 srcptr++; delete [elements, elements=newarray, Arraysize= Sz
template <class Type> void Array<Type>::Resize (int sz) { if ( sz >= 0 && sz != ArraySize ) { Type * newarray = new Type[sz]; if ( newarray == 0 ) cerr << "Memory Allocation Error" << endl; int n = ( sz <= ArraySize ) ? sz : ArraySize; Type *srcptr = elements; Type *destptr = newarray; while ( n-- ) * destptr++ = * srcptr++; delete [ ] elements; elements = newarray; ArraySize = sz; } }
二维教组 三维数组 m1=5m2=4m3= n3 a[2][2] m2 3×4×6 2×6 M2 n1 m3 a[3][22 行向量下i 页向量7i 列量下 行向量下 列向量下k
二维数组 三维数组 行向量 下标 i 页向量 下标 i 列向量 下标 j 行向量 下标 j 列向量 下标 k
数组的连续存储方式 0一维数组 0时 Loc(i LOC(-1)+l,i>0时 3456789 a35274918605477834102 LOC(i)=LOC (i-1)+l=a+i l
数组的连续存储方式 一维数组 − + = = ( ) , 0 时 α , 0 时 ( ) LOC i l i i LOC i 1 LOC ( i ) = LOC ( i -1 ) + l =α+ i*l
二维数组 a0[0]a01a0[2 0J[m-1 a10a1l1]a1[2] alllm-11 =a20]a(2]a(2][2] a([2l[m-1 (a[n-10] a[n-1[l] a[n-1][2 n 行优先LOC(k)=j*m+k
• 二维数组 − − − − − − − − = [ ][ ] [ ][ ] [ ][ ] [ ][ ] [ ][ ] [ ][ ] [ ][ ] [ ][ ] [ ][ ] [ ][ ] [ ][ ] [ ][ ] [ ][ ] [ ][ ] [ ][ ] [ ][ ] 1 0 1 1 1 2 1 1 2 0 2 1 2 2 2 1 1 0 1 1 1 2 1 1 0 0 0 1 0 2 0 1 a n a n a n a n m a a a a m a a a a m a a a a m a 行优先 LOC ( j, k ) = j * m + k