c++顺序容器之array

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;
程序执行结果:







评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值