当前位置:首页 > 芯闻号 > 充电吧
[导读]---- C++标准库定义了6种顺序容器(Sequential Container)类型:      vector,deque,list,forward_list,array,string---- 顺

---- C++标准库定义了6种顺序容器(Sequential Container)类型:

      vector,deque,list,forward_list,array,string

---- 顺序容器为程序员提供了控制元素存储和访问顺序的能力,这种顺序不依赖于元素的值,而是与元素加入容器时的位置相对应。

      对顺序容器内的元素按其位置存储和访问。

---- 标准库中的所有容器都提供了快速顺序访问元素的能力,在以下方面有不同的性能折中:

--1)向容器添加或从容器删除元素的代价。

--2)非顺序访问容器中元素的代价。


vector 可变大小数组,支持快速随机访问。
在尾部之外的位置插入或删除元素可能较慢。 deque 双端队列,支持快速随机访问,在头尾位置插入/删除速度很快。 list 双向链表,只支持双向顺序访问。
在list中的任何位置进行插入/删除操作速度快。 forward_list 单向链表,支持单向顺序访问。插入/删除速度快。 array 固定大小数组 string 与vector相似的容器。

---- deque:双端队列,double-ended queue的简写,发音为“deck”。其实现类似于vector容器,支持随机访问。

主要区别在于:从deque对象的起始位置插入和删除元素的时间是固定的,而不像vector中那样是线性时间的。

所以如果多数操作发生在序列的起始和结尾处,则应考虑使用deque数据结构。  

-- 为实现在deque两端执行插入和删除操作的时间为固定的这一目的,deque对象的设计比vector对象更为复杂。

因此,尽管两者都提供对元素的随机访问和在序列中部执行线性时间的插入和删除操作,但vector容器执行这些操作时速度要快些。

---- 标准库还提供了三种顺序容器适配器(adaptors):stack,queue,priority_queue

---- stack:后进先出(LIFO)堆栈。

---- queue:先进先出(FIFO)队列。

---- priority_queue:有优先级管理的队列。

适配器是根据原始的容器类型所提供的操作,通过定义新的操作接口,来适应基础的容器类型。

1、push_back()

---- 所有顺序容器都支持push_back()操作,提供在容器尾部插入一个元素的功能。

---- 调用push_back函数会在容器尾部创建一个新元素,并使容器的长度加1.

---- 除了push_back之外,list和deque容器类型还提供了push_front()实现在容器首部插入新元素的功能。

2、在顺序容器中添加元素的操作


c.push_back(t) 在容器c的尾部添加值为t的元素。返回void类型 c.push_front(t) 在容器c的首部添加值为t的元素。返回void类型
只适用于list和deque容器类型 c.insert(p,t) 在迭代器p所指向的元素前面插入1个值为t的新元素。
返回指向新添加元素的迭代器。 c.insert(p,n,t) 在迭代器p所指向的元素前面插入n个值为t的新元素。
返回void类型
c.insert(p,b,e) 在迭代器p所指向的元素前面插入由迭代器b和e标记的
范围内的元素。返回void类型

举例说明:


#include#include#include#includeusing namespace std;
int main()
{
	vectorivec;
	ivec.push_back(10);
	vector::iterator itor = ivec.end();
	ivec.insert(itor,5,20);//尾部插入5个20
	for(itor=ivec.begin();itor!=ivec.end();itor++)
	{
		cout<<*itor<<" ";
	}
	cout<<endl<<"ivec.size() = "<<ivec.size()<<endl;
	
	vectorsvec;
	svec.insert(svec.begin(),"china");
	svec.insert(svec.begin(),3,"yan");
	string sarray[4]={"dog","cat","pig","bird"};
	svec.insert(svec.end(),sarray,sarray+4);
	vector::iterator stor;
	for(stor=svec.begin();stor!=svec.end();++stor)
	{
		cout<<*stor<<" ";
	}
	cout<<endl<<"svec.size() = "<<svec.size()<<endl;
	
	listilist;
	ilist.push_back(15);
	ilist.push_front(20);//list and deque can use
	ilist.insert(ilist.begin(),3,8);
	list::iterator iltor;
	for(iltor=ilist.begin();iltor!=ilist.end();++iltor)
	{
		cout<<*iltor<<" ";
	}
	cout<<endl<<"ilist.size() = "<<ilist.size()<<endl;
	system("pause");
	return 0;
}

输出:




3、容器的比较(关系操作符)

---- 相比较的容器必须具有相同的容器类型,而且其元素类型也必须相同。

例如:vector

---- 容器的比较是基于容器内元素的比较。

--1)如果两个容器具有相同的长度而且所有元素都相等,那么这两个容器就相等;否则,它们就不相等。

--2)如果两个容器的长度不相等,但较短的容器中的所有元素都等于较长容器中对应的元素,则称较短的容器小于另一个容器。

--3)如果两个容器都不是对文的初始子序列,则它们的比较结果取决于所比较的第一个不相等的元素。

例如:

        ivec1: 1 3 5 7 9 12

        ivec2: 0 2 4 6 8 10

        ivec3: 1 3 9

        ivec4: 1 3 5 7

        ivec5: 1 3 5 7 9 12

----   ivec1>ivec2  //true 1>0

----   ivec1<ivec3  //true 5<9

----   ivec1==ivec5 //true

----   ivec1>ivec4 && ivec1!=ivec4


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭