前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++STL 2——序列容器 array、vector 、deque、 list 和 forward_list

C++STL 2——序列容器 array、vector 、deque、 list 和 forward_list

作者头像
种花家的奋斗兔
发布2020-11-13 10:53:26
5720
发布2020-11-13 10:53:26
举报

C++STL 2——序列容器

一、概述

序列容器以线性序列的方式存储元素。它没有对元素进行排序,元素的顺序和存储它们的顺序相同。

  1. array<T,N> (数组容器) :是一个长度固定的序列,有 N 个 T 类型的对象,不能增加或删除元素。
  2. vector<T> (向量容器) :是一个长度可变的序列,用来存放T类型的对象。必要时,可以自动增加容量,但只能在序列的末尾高效地增加或删除元素。
  3. deque<T> (双向队列容器) :是一个长度可变的、可以自动增长的序列,在序列的两端都不能高效地增加或删除元素。
  4. list<T> (链表容器) 是一个长度可变的、由 T 类型对象组成的序列,它以双向链表的形式组织元素,在这个序列的任何地方都可以高效地增加或删除元素。访问容器中任意元素的速度要比前三种容器慢,这是因为 list<T> 必须从第一个元素或最后一个元素开始访问,需要沿着链表移动,直到到达想要的元素。
  5. forward list<T> (正向链表容器) :是一个长度可变的、由 T 类型对象组成的序列,它以单链表的形式组织元素,是一类比链表容器快、更节省内存的容器,但是它内部的元素只能从第一个元素开始访问。

可供使用的序列容器以及它们之间的区别:

二、函数

1. array、vector 和 deque 容器的函数成员,它们中至少有两个容器实现了同样的函数成员。

函数成员

array<T,N>

vector<T>

deque<T>

begin() - 返回幵始迭代器

end() - 返回结束迭代器

rbegin() - 返回反向'开始迭代器

rend() - 返回反向结束迭代器

cbegin() - 返M const开始迭代器

cend() - 返回const结束迭代器

crbegin() - 返回const反向开始迭代器

crend() - 返回const反向结束迭代器

assign() - 用新元素替换原有内容

-

operator=() - 复制同类型容器的元素,或者用初始化列表替换 现有内容

size() - 返回实际元素个数

max_size() - 返回元素个数的设大值

capacity() - 返回当前容量

-

-

empty() - 返回true,如果容器中没有元素的话

resize() - 改变实际元素的个数

-

shrink _to_fit() - 将内存减少到等于当前元素实际所使用的大小

-

front() - 返回第一个元素的引用

back() - 返回铖后一个元素的引用

operator[]() - 使用索弓丨访问元素

at() - 使用经过边界检査的索引访问元素

push_back() - 在序列的尾部添加一个元素

-

insert() - 在指定的位置插入一个或多个元素

-

emplace() - 在指定的位置直接生成一个元素

-

emplace_back() - 在序列尾部生成一个元素

-

pop_back() - 移出序列尾部的元素

-

erase() - 移出一个元素或一段元素

-

clear() - 移出所苻的元素,容器大小变为 0

-

swap() - 交换两个容器的所有元素

data() - 返回包含元素的内部数组的指针

-

缺少“是”的列表明,对应的容器并没有定义这个函数。没有必要记住这张表,该表仅供参考。在深入了解到容器是如何组织元素以后,你会本能地知道哪个容器的哪些成员函数能使用。

2. list 和 forward_list 的函数成员。

函数成员

list<T>

forward list<T>

begin() - 返回开始迭代器

end() - 返回结束迭代器

rbegin() - 返回反向开始迭代器

-

rend() - 返回反向结束迭代器

-

cbegin() - 返回 const 开始结束迭代器

before_begin() - 返回一个指向第一个元素前一个位置的迭代器

-

cbefore_begin() - 返回一个指向第一个元素前一个位置的const迭代器

-

cend() - 返回 const 结束迭代器

crbegin() - 返回 const 反向开始迭代器

-

crend() - 返回 const 反向结束迭代器

-

assign() - 用新元素替换原有内容

operator=() - 复制同类型容器的元素,或者用初始化列表替换现有内容

size() - 返回实际元素个数

-

max_size() - 返回元素个数的最大值

resize() - 改变实际元素的个数

empty() - 返回 true,如果容器中没有元素的话

from() - 返回第一个元素的引用

back() - 返回最后一个元素的引用

-

push_back() - 在序列的潘部添加一个元素

-

push_front() - 在序列的起始位置添加一个元素

emplace() - 在指矩位置直接生成一个元素

-

emplace_after() - 在指定位置的后面直接生成一个元素

-

emplace_back() - 在序列尾部生成一个元素

-

cmplacc_front() - 在序列的起始位生成一个元索

insert() - 在指定的位置插入一个或多个元素

-

insert_after() - 在指定位置的后面插入一个或多个元素

-

pop_back() - 移除序列尾部的元素

-

pop_front() - 移除序列头部的元素

reverse()-反向元素的顺序

erase() - 移除指定位置的一个元素或一段元素

-

erase_after() - 移除指定位 1;后面的一个元素或一段元素

-

remove() - 移除所苻和参数匹配的元素

remove_if() - 移除满足一元函数条件的所有元素

unique() - 移除所有连续重复的元素

clear() - 移除所有的元素,容器大小变为 0

swap() - 交换两个容器的所有元素

sort() - 对元素进行排序

merge() - 合并两个有序容器

splice() - 移动指定位置前面的所有元素到另一个同类型的 list 中

-

splice_after() - 移动指定位置后面的所有元素到另一个同类型的 list 中

-

所有序列容器的函数成员 max_size() 都会返回它能存储的元素个数的最大值。这通常是一个很大的值,一般是 2^32 -1,所以我们很少会用到这个函数。

详情参考C语言中文网

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-03-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • C++STL 2——序列容器
    • 一、概述
      • 二、函数
        • 1. array、vector 和 deque 容器的函数成员,它们中至少有两个容器实现了同样的函数成员。
        • 2. list 和 forward_list 的函数成员。
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档