c++中可以用类类型array来定义数组,array是模板类,其声明如下:
array<class T,size_t n> my_array;
array内部只包含数据元素,即使是表示其大小的值size也仅仅是模板类声明时的参数。类类型array也有[ ]操作,和普通数组相比,由于array类包含一些成员函数,所以 在操作上显得更加简单高效。
array成员介绍:
/**迭代器相关**/
array<int,5> my_array;
int i;
for(i=0;i<5;++i) /**[]操作**/
my_array[i]=i+1;
array<int,5>::iterator beg=my_array.begin(); //返回指向array对象的第一个元素的指针
array<int,5>::iterator end=my_array.end(); //返回array对象的尾后指针
array<int,5>::const_iterator cbeg=my_array.cbegin(); //返回值同begin,但为const值
array<int,5>::const_iterator cend=my_array.cend(); //返回值同end(),但为const值
array<int,5>::reverse_iterator rbeg=my_array.rbegin(); //reverse beginning,返回指向array对象的最后一个元素的指针
array<int,5>::reverse_iterator rend=my_array.rend(); //reverse end,
array<int,5>::const_reverse_iterator crbeg=my_array.crbegin(); //返回值同rbegin,但为const值
array<int,5>::const_reverse_iterator crend=my_array.crend(); //返回值同rend(),但为const值
while(beg!=end)
cout<<*(beg++)<<" ";
cout<<endl;
while(rbeg!=rend)
cout<<*(rbeg++)<<" ";
cout<<endl;
程序执行结果:
<pre name="code" class="cpp">/************容器大小相关***************
size(),max_size()均返回容器的大小,由于array模板类声明时就已指定容器大小,
so,这两个函数的返回值都等于第二个模板参数n.
empty()返回值为bool型,若array对象为空,返回true,否则返回false.
*************************************/
array<char,10> my_array;
cout<<"my_array.size()=="<<my_array.size()<<endl;
cout<<"my_array.max_size()=="<<my_array.max_size()<<endl;
if(my_array.empty())
cout<<"Empty array!"<<endl;
else
cout<<"Not empty."<<endl;
程序执行结果:
front()返回array对象第一个元素的引用;
back()返回array对象尾元素的引用;
data()返回指向array对象第一个元素的指针;
at()功能相当于[ ]操作,但是,若函数参数大于等于array.size()就会自动抛出错误,所以使用起来更安全.
/****************数据元素相关******************/
array<int,5> my_array;
int i;
for(i=0;i<5;++i)
my_array.at(i)=i+1;
cout<<my_array.front()<<endl;
cout<<my_array.back()<<endl;
cout<<my_array.at(3)<<endl;
程序执行结果:
fill(ElementType V) 将array对象的全部元素填充为同一个值V;
swap(A1,A2) 将数组A1和A2中的元素全部交换,A1与A2必须大小相等,并有相同类型的元素类型;
/****************数组元素整体操作******************/
array<int,5> my_array;
array<int,5> your_array;
int i;
my_array.fill(6);
your_array.fill(7);
for(i=0;i<5;++i)
cout<<my_array[i]<<" ";
cout<<endl;
for(i=0;i<5;++i)
cout<<your_array[i]<<" ";
cout<<endl;
swap(my_array,your_array);
cout<<endl;
for(i=0;i<5;++i)
cout<<my_array[i]<<" ";
cout<<endl;
for(i=0;i<5;++i)
cout<<your_array[i]<<" ";
cout<<endl;
程序执行结果: