问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C++容器类中参数列表如何调用

发布网友 发布时间:2022-04-21 20:20

我来回答

1个回答

热心网友 时间:2023-09-27 22:47

一、STL容器类
STL(Standard
Template
Library)的六大组件:容器(containers)、迭代器(iterators)、空间配置器(allocator)、配接器(adapters)、算法(algorithms)、仿函数(functors)六个部分。其交互关系:容器通过空间配置器取得数据存储空间,空间配置器通过迭代器存取容器的内容,仿函数可以协助空间配置器完成不同的策略变化,配接器可以修饰或套接仿函数。
C++中的容器类包括“顺序存储结构”和“关联存储结构”,前者包括vector,list,deque等;后者包括set,map,multiset,multimap等。若需要存储的元素数在编译器间就可以确定,可以使用数组来存储,否则,就需要用到容器类了。
1、vector
连续存储结构,每个元素在内存上是连续的;
支持高效的随机访问和在尾端插入/删除操作,但其他位置的插入/删除操作效率低下;
2、deque
连续存储结构,即其每个元素在内存上也是连续的,类似于vector,不同之处在于,deque提供了两级数组结构,第一级完全类似于vector,代表实际容器;另一级维护容器的首位地址。
这样,deque除了具有vector的所有功能外,还支持高效的首端插入/删除操作。
3、list
非连续存储结构,具有双链表结构,每个元素维护一对前向和后向指针,因此支持前向/后向遍历。
支持高效的随机插入/删除操作,但随机访问效率低下,且由于需要额外维护指针,开销也比较大。
4、vector
--
list
--
deque:
a、若需要随机访问操作,则选择vector;
b、若已经知道需要存储元素的数目,
则选择vector;
c、若需要随机插入/删除(不仅仅在两端),则选择list
d、只有需要在首端进行插入/删除操作的时候,才选择deque,否则都选择vector。
e、若既需要随机插入/删除,又需要随机访问,则需要在vector与list间做个折中。
f、当要存储的是大型负责类对象时,list要优于vector;当然这时候也可以用vector来存储指向对象的指针,同样会取得较高的效率,但是指针的维护非常容易出错,因此不推荐使用。
5、capacity
--
size
a、capacity是容器需要增长之前,能够盛的元素总数;只有连续存储的容器才有capacity的概念(例如vector,deque,string),list不需要capacity。
b、size是容器当前存储的元素的数目。
c、vector默认的容量初始值,以及增长规则是依赖于编译器的。
6、用vector存储自定义类对象时,自定义类对象须满足:
a、有可供调用的无参构造函数(默认的或自定义的);
b、有可用的拷贝赋值函数(默认的或自定义的)
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
【面试攻略】20个HR最爱问的面试问题答案和技巧 松鹤楼菜馆简介 松鹤楼品牌释义 松鹤楼发展历史 松鹤楼中华老号 胡行乱为的意思是什么 胡作乱为的意思是什么 胡作乱为近义词有哪些 胡作胡为近义词有哪些 胡作胡为的近义词有哪些 容器的六大组件 C++标准库主要就指STL吗? C++ STL有哪些经典书籍? C++STL哪些内容是必须学习的 怎么配置zookeeper环境变量 虚拟机安装的zookeeper主机怎样访问 zookeeper 最好安装在 数据节点还是 主节点 hbase 必须安装zookeep吗 我的hadoop为伪分布式安装,zookeeper应该怎样安装 安装zookeeper为什么不用root的账户 zookeeper linux 安装怎么配置java 环境变量 zookeeper怎么才是安装成功了 zookeeper怎么配置步骤 hadoop需要安装zookeeper吗 请教zookeeper安装问题 zookeeper 用什么用户安装 zookeeper 安装需要jdk吗 安装zookeeper需要先装java吗 如何查看eclipse 安装了zookeeper zookeeper是要安装在哪个目录 STL是什么 怎么在linux虚拟机上安装zookeeper C++中STL的代码分类有哪些 STL与C++标准类库有什么区别 stL是什么? 安装单机habase报错,好像是zookeeper问题,单机还... stl是什么文件 C++里STL和ATL是什么? PLC编程语言STL是什么? 三菱PLC梯形图中STL是什么意思 请问C++中的STL是什么? c++stl是什么,有什么用 .stl是什么文件后缀 stl是什么文件格式 蛤蟆草煮水洗身体,能治疗白癫风吗 用蛤蟆草煮水擦洗身体能治荨麻珍吗? 野薄荷,癞蛤蟆草,艾蒿可以一同煮水洗澡吗? 蛤蟆草怎么吃 春秋两季的蛤蟆草是作用一样吗 蛤蟆草汁怎么放不变质?