c++顺序容器之array

来源:互联网 发布:英雄无敌 mac 10.10 编辑:程序博客网 时间:2024/06/05 14:36

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







0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 扶了老人被讹诈怎么办 遇见碰瓷讹人的怎么办 假机油用了4年怎么办 苹果6手机变砖头怎么办 苹果8升级变砖头怎么办 苹果id锁变砖头怎么办 钥匙断在锁里了怎么办? u型锁忽然打不开怎么办 密码门锁没电了怎么办 智能门锁没电了怎么办 十字锁钥匙丢了怎么办 罐头的拉环断了怎么办 锁坏了 打不开了怎么办 门锁锁不起来了怎么办 卧室门锁舌断了怎么办 锁舌头坏了怎么办自救 门锁斜舌头断了怎么办 锁把手断了半截怎么办 门锁那一块掉了怎么办 qq动态密码忘了怎么办 小三怀孕了原配该怎么办 我当了小三怎么办 被降职后在单位怎么办 领导故意整我该怎么办 小孩怎么教育都不听怎么办 赵本山怎么办的刘涌 起诉离婚被告不出庭怎么办 安装u盘进入系统怎么办 思讯加密狗坏了怎么办 村主任选不出来怎么办 你的id已被停用怎么办 车牌摇号中签后怎么办 北京车卖了指标怎么办 车的电脑板坏了怎么办 饭卡消磁了怎么办妙招 有好项目没资金怎么办 买的股票涨停了怎么办 考研没过国家线怎么办 中石化的油卡怎么办 5173号被找回了怎么办 谭木匠梳子断了怎么办