c++ primer 顺序容器 2021-07-20

c++ 容器相关

所有容器都支持的操作(不支持的括号会写)

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

arrary

  • 元素类型和大小都是arrary类型的一部分
  • arrayy<int, 10> digits = {0, 1,…}
  • array与内置数组不同,是可以拷贝操作,可以对象赋值操作(要求容器类型及大小都相同)
  • 不可以将一个花括号列表赋值给array
  • array不支持assign

assign

在这里插入图片描述

在这里插入图片描述

向顺序容器中添加元素的操作

在这里插入图片描述

  • insert函数将元素插入到迭代器所指定的位置之前
  • vector list deque都支持insert成员(注意插入到任何位置都是合法的,例如可以使用insert完成vector没有的push_front操作,但是会很耗时),forward_list提供特殊版本的insert成员。
list<string> lst;
string word;
auto iter = lst.begin();

while (cin >> word)
	iter = lst.insert(iter, word);//insert 等效 push_fornt
  • 给insert传一对迭代器,它们不能指向添加元素的目标容器(不能传自身的迭代器)。
  • C++11 insert操作返回指向第一个新加入元素的迭代器,如果范围为空,不插入任何元素返回第一个参数,旧版本返回void。

emplace\emplace_back\emplace_front

  • C++11 新特性对标insert\push_back\push_front
    -当调用push或insert成员函数时,是将元素类型的对象传递给它们,这些对象被拷贝到容器中。
    而当调用emplace成员函数时,则是将参数传递给元素类型的构造函数emplace成员使用这些参数在容器管理的内存空间中直接构造元素。
    例如
    在这里插入图片描述
  • emplace函数在容器中直接构造元素,传递给emplace的参数必须与元素类型的构造函数相匹配。

访问元素

  • front 每个顺序容器都有,包括array
  • forward_list 没有 back, forward_list的迭代器不能递减–
  • at操作适用于 string vector deque array
    在这里插入图片描述
  • 在调用front back之前要先判断容器是否为空
  • front back at 返回其实都是引用

删除操作

在这里插入图片描述

改变容器大小与容器容量管理

  • risize 是改变容器大小,reserve是用于分配空间(用于我们通知容器应该保存多少元素)
    在这里插入图片描述

  • reserve和capacity只适用于vector和string

  • reserve比当前capacity小时,则什么也不做。

  • C++11 shrink_to_fit要求deque\vector\string退回不需要的内存空间,但是具体的实现可以选择忽略此请求,也就是说调用该函数也不保证一定退回内存空间。
    在这里插入图片描述

capacity与size

  • size指的是容器已经保存的元素个数
  • capacity表示在不分配新的内存空间的前提下,该容器最多可以保存多少元素。

string

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 新标准引入 to_string\ stod
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

容器适配器 stack\queue\priority_queue

在这里插入图片描述

  • 1、默认情况下,stack和queue是基于deque实现的,priority_queue是基于vector实现的。
  • 2、stack只要求push_back、pop_back、back操作,除了arrary、forward_list之外的容易类型都可以来构造,一般默认基于deque,也可以在list或vector之上实现。
  • 3、queue要求back、push_back、front、push_front,不能基于vector构造
  • 4、priority_queue除了front\push_back\pop_back之外还要求随机访问的能力,所以可以在vector或deque上构造。但不能基于List构造。默认有<确定相对优先级。
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值