C++中常用的std标准容器(全部容器功能介绍)

C++中常用的std标准容器

从c++11标准以来,c++中std定义的几种容器的效率非常高,优化的非常好,完全没有必要自己去定义类似的数据结构。了解使用它们,可以满足90%的日常编程需要。该篇文章基于c++11标准,从用户角度来介绍常用的顺序容器与并联容器(如果想从内部了解它们是怎么实现的,推荐看看《std源码剖析》这本书)。它们包括:

顺序容器:

vector
string (它不是类模板)
list
forward_list
deque
queue
priority_queue
stack

有序关联容器:

map
multimap
set
multiset

无序关联容器:

unordered_map

unordered_multimap

unordered_set

unordered_multiset

力推网站: https://en.cppreference.com/w/cpp/container
, 里面介绍的绝对很全的,绝对比本篇文章好太多太多。

很多容器功能是重复的,不再一一列举

顺序容器

1. vector容器

a. vector的定义与初始化

// T 表示实例化类模板时使用的类型

vector<T> v1                 // 默认初始化, 此时v1为空。
vector<T> v1(v2)              // 执行的copy初始化,此时v1与v2的内容相同
vector<T> v1 = v2           // 与上面相同,都会执行copy构造函数
vector<T> v1(n)              // 此时v1的size大小为n ,它里面的值是根据T的类型进行默认初始化的
vector<T> v1(n, a)           // v1的初始化为n个值为a的元素
vector<T> v1{
   a, b, c}       // 列表初始化,v1内现在的元素就是a, b, c (这是c++11标准新入的)
vector<T> v1 = {
   a, b, c}    // 与上面相同

列表初始化是什么?

对于上面的几种初始化方法,最常用的有三种,

  1. 默认初始化,这里vector为空;
  2. 2.copy初始化,这时用另一个vector初始化该vector
  3. 列表初始化,为vector 初始化一些初始值。 几乎或很少在初始化vector的时候去设定它的size大小,因为vector的push_bask是非常高效的,甚至比提前设置它的大小更高效(见c++primer plus书中更加详细)

b. vecotr常使用的操作

  1. 属性操作
v1.size()      //v1内已经存放的元素的数目
v1.capacity()    // v1现有的在存储容量(不再一次进行扩张内存空间的前提下)
v1.empty()     // 判断v1是否为空
v1.max_size()    // 返回vector可以存放的最大元素个数,一般这个数很大,因为vector可以不断调整容量大小。
v1.shrink_to_fit()  // 该函数会把v1的capacity()的大小压缩到size()大小,即释放多余的内存空间。
  1. 访问操作:访问操作都会返回引用,通过它,我们可以修改vector中的值。

v1[n]        // 通过下标进行访问vector中的元素的引用 (下标一定要存在 ,否则未定义,软件直接崩了)
v1.at(n)       // 与上面类似,返回下标为n的元素的引用,不同的是,如果下标不存在,它会抛出out_of_range的异常。它是安全的,建议使用它。
v1.front()      // 返回vector中头部的元素的引用(使用时,一定要进行非空判断)
v1.back()      // 返回vector中尾部的元素 引用(使用时,一定要进行非空判断)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我心向阳iu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值