C++ 学习笔记9-std::vector二

一、vector

1.vector定义

在这里插入图片描述

2.vector特点:

1.随机访问元素,编译vector中的所有元素速度也非常快
2.末端添加删除元素效率高。前端和中间删除和添加元素效率低,存在当前容器大小和容量的关系
3.数据在内存之间紧挨着,使用内存最少,一般没啥特殊要求都用vector

3.实现接口

1.定义和初始化接口

C++11用 using Group = std::vector;
C++ 98 用 typeded std::vector Group;
在这里插入图片描述
Group d(10);//定义这个有10个元素,默认值为0
Group e(10,1.0f); //10个元素,每个元素都是1.0f
Group f(e.begin(), e.end()); //赋值,e的全部值都给f
Group h和g都是C++11才有的

2.操作接口

在这里插入图片描述
d.reserve 预留空间
d.shrink_to_fit(); 缩减内存

3.赋值接口

在这里插入图片描述

4.交换

swap是绝对安全的,vector是交换了内部的指针,指针操作一般不会出现异常
在这里插入图片描述

5.元素访问

在这里插入图片描述

a)at比[ ] 多了边界检查
b)调用front和back的时候确保b不是empty的
if(!b.empty())
{
b.front();//才可以调用
b.back();
}

6.迭代器相关

在这里插入图片描述
在这里插入图片描述
auto iterAfter = b.erase(b.begin()); //erase会返回要删除元素的下一个元素的位置,如果删除元素完了,会返回end
b.eraser(b.begin()); //把头去掉
b.erase(b.begin(), b.end()); //从头到尾全删除掉


7、插入

b.insert(b.end() , 100.0f); //insert第一个参数是位置,第二个是要插入的值
iter = b.insert(b.end(), 10, -10.0f); //表示在末尾插入10个-10.0
b.insert(b.end() , h.begin() , h.end()); // 从h的头到尾全部插入b的尾部
C++11之后
b.emplace(b.end() , 10.0f);
b.emplace_back(10.0f);

8.重新使用内存设置大小

b.resize(10);
b.resize(100 , 1.0f); //不足100个空间就插入1.0f填充到100个
b.clear(); //并不会让整个容器的容量变小
b.shink_to_fit(); //让内存使用降低到使用元素的数量一致

9.和C的接口互用

在这里插入图片描述

10.异常

a) push_back失败,vector无变化
b) 元素搬移、复制没异常的话,insert \ emplace \ emplace_back \push_back也没啥变化,没有错误
c ) pop_back绝对不会出现异常
d) 元素搬移、复制没异常的话,erase也不会有异常
e) swap clear肯定不会有异常

11.特殊

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值