STL顺序容器

一、顺序容器概述

1.1

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






   







string和vector将元素保存在连续的内存空间中,进行插入/删除操作后,需要移动插入/删除位置之后的左右元素,来保持连续存储。

二、容器库概览

2.1

当将一个容器初始化为另一个容器的拷贝时,两个容器的容器类型和元素类型都必须相同

list<string> name = {"Tom", "Jim","Kitty"};

vector<const char*> item = {"he","she","me"};


list<string> list1(name);   //true

list<int>      list2(name);   //false 元素类型必须相同

vector<string> vector1(name);   //false 容器类型必须相同


//ture (array除外)拷贝由一个迭代器对指定的元素范围,不要求容器类型和元素类型相同

fowared_list<string> list3(item.begin(), item.end());

2.2

int age[5] = {0,1,2,3,4};

int cpy[5] = age;  //false 内置数组不支持拷贝或赋值


array<int, 10> digits = {0,1,2,3,4};

array<int, 10> copy = digits;   //true 只要数组类型匹配即合法

三、顺序容器操作

3.1 使用emplace操作

     调用emplace_front、emplace和emplace_back等成员函数时,则是将参数传递给元素类型的构造函数,emplace成员使用这些参数再容器管理的内存中直接构造元素。而调用push或insert成员函数,是将元素类型的对象传递给他们,这些对象被拷贝到容器中。

3.2 访问元素

       在容器中访问元素的成员函数(front、back、下标和at)返回的都是引用。

     如果容器是一个const对象,返回值是const的引用。如果容器不是const的,则返回值是普通引用,可以改变元素的值。

3.3 forward_list


四、vector对象是如何增长的


五、容器适配器

三个顺序容器适配器:stack、queue和priority_queue

默认情况下,stack和queue是基于deque实现的,priority_queue是在vector之上实现的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值