顺序容器的介绍及常用操作

5 篇文章 0 订阅

一、常用容器介绍

一个容器就是一些特定类型对象的集合。顺序容器为程序员提供控制元素储存和访问顺序的嫩里。这种顺序不依赖于元素的值,而是元素加入容器时的位置相对应。

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

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值