概述
一、常用容器介绍
一个容器就是一些特定类型对象的集合。顺序容器为程序员提供控制元素储存和访问顺序的嫩里。这种顺序不依赖于元素的值,而是元素加入容器时的位置相对应。
vector 可变大小数组。支持快速的随机访问,在尾部之外的位置插入或者删除元素会很慢
deque 双端队列,支持,快速随机访问,在尾部之外的位置插入或删除元素可能很慢
list 双向列表。支持快速随机访问,在列表任何位置插入都很快
forward_list 单向链表,只支持单向顺序访问,在链表任何位置进行插入/删除操作都很快
array:固定大小数组,支持快速随机访问,不能添加或者删除元素
string:与Vector类似,但是专门用于保存字符。随机访问快,在尾部插入/删除速度快
选择容器的基本原则
首选vector
如果程序中有很多小的元素,且空间的额外开销很重要,则不要使用list或者forword_list
如果程序要求随机访问元素,应使用vector或者deuqe
如果程序需要在头尾插入或者删除元素,使用list或者forword_list
如果程序程序需要在头尾插入或者删除元素,但不胡在中间位置进行插入或删除操作,使用deque
如果程序只有在读取输入时才需要在容器中间插入元素,随后需要随机访问元素
总之,常用三个容器
(1)容器首选vector,数组连续,空间开销小
(2)涉及随机插入删除,选择list,链表方便,但是空间上不连续,导致额外空间开销大,酌情考虑。
(3)deque,中和前两个特点,如果需要随机访问,但元素的删除和插入只在两端,使用deque。
二、常用容器操作介绍
类型别名
iterator :容器类型的迭代器类型
const_iterator: 可以读取元素,不可以改变元素的容器类型的迭代器类型
size_type:无符号整型类型,size()返回的类型
difenrence_type:带符号的整型类型,两个迭代器像运算得到的值的类型
value_type :元素类型
reference:元素测左值类型
const_reference:cosnt左值类型
ps:我觉得上面并不是很重要看看就好,你可以使用auto或者decltype去拿到该类型。知道它是关于容器就行。
构造函数(初始化方式)(下面使用vector举例)
vector<int> vec; :默认构造
vector<int> vec1(vec); :拷贝构造
vector<int> vec2(vec.begin(),vec.end()); :拷贝构造
vector<int> vec3 {1,2,3,4}; :列表构造
赋值与swap
vec1 = vec2; //赋值
vec1 = {1,2,3,4};
swap(vec1,vec2);//交换
vec.swap(vec2);
大小
vec.size();//返回vec的大小
vec.empty();//返回是否位空
添加/删除元素 (使用vector举例)
vec.push_back(i) //在vec尾部添加元素i
vec.pop_bcak()//删除尾部元素
vec.clear() //删除容器元素
vec.erase( iterator i )//删除i指向元素
vec.insert( iterator i,j)//在位置i添加元素j
最后
以上就是壮观魔镜为你收集整理的顺序容器的介绍及常用操作的全部内容,希望文章能够帮你解决顺序容器的介绍及常用操作所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复