vector

一、vector的描述

vector是C++的STL(标准模板库)最常用的容器之一,与array相似,都是C/C++中普通数组的升级版。与array(数组容量固定)不同的是,vector是动态分配内存的,即:数组的容量不是固定的,可以动态的对数组中的数据进行增删,同时动态的进行内存分配和释放。

1.1、vector的基本使用

1.1.1、vector的头文件

#include<vector>
using namespace std;

1.1.2、vector的容器的几种创建方式

vector根据不同应用场景有如下几种创建方式

vector<double> values;//创建空double类型的空容器
vector<int> Arrs{1,2,3,4,5,6,7,8,9};//创建整型的容器并初始化,注意这里初始化应该用大括号({})而不是中括号
vector<int>::const_iterator first = Arrs.behin()+1;//第二个迭代容器
vector<int>::const_iterator last = Arrs.end()-1;//倒数第二个迭代器
vector<int> Arrs2(first,last);//创建整型的容器,并初始化为Arrs的第二个到第八个:{2,3,4,5,6,7,8}
vector<float> Arrs3(5,6.0);//创建浮点型容器,并初始化为5个元素的值均为6.0:{6.0,6.0,6.0,6.0,6.0}

1.2、vector成员函数

vector容器不但拥有普通数组的基本功能:根据索引返回值、插入、删除、迭代器等

1.2.1、成员函数功能描述
函数成员函数功能
begin()/rbegin()返回指向容器中的第一个元素的迭代器
end()/rend()返回指向容器中的最后一个元素的迭代器
cbegin()/crbegin()和begin()功能相同,只不过在此基础上,增加了const属性,不能修改元素
cend()/crend()和end()功能相同,只不过在此基础上,增加了const属性,不能修改元素
size()返回实际元素个数
resize()改变实际元素的个数
empty()判断容器是否有元素:有返回false,没有返回true
capacity()返回当前容量
reverse()增加容器的容量
shrink_to_fit()将内存减少到等于当前元素实际使用大小
at()使用经过边界检查的索引访问元素
front()返回第一个元素
back()返回最后一个元素
data()返回指向容器第一个元素的指针
push_back()在容器末尾添加元素
assign()用新元素替换原有内容
pop_back()删除容器尾部元素
insert()在指定位置插入一个或多个元素
erase()一处一个元素或者一段元素
clear()移除所有的元素,容器大小变为0
swap()交换两个容器的所有元素
emplace()在指定位置生成一个元素

1.3、vectorde 数组片段截取操作

数组片段截取就是将vector数组的某一段连续的区间单独提取出来存储在另外一个vector数组。比如有一个5个元素的数组Arras,需要将中间的三个元素单独作为数组存在另一个数组Arrs2:

//怎么才能将Arrs的中间三个元素,放到Arrs去?
vector<int> Arrs{1,2,3,4,5};
vector<int> Arrs2;

1.3.1、初始化截取

vector<double> values;//创建空double类型的空容器
vector<int> Arrs{1,2,3,4,5};//创建整型的容器并初始化,注意这里初始化应该用大括号({})而不是中括号
vector<int>::const_iterator first = Arrs.behin()+1;//第二个迭代器
vector<int>::const_iterator last = Arrs.end()+3//第三个迭代器
vector<int> Arrs2(first,last);//创建整型的容器,并初始化为Arrs的第二个到第四个:{2,3,4}

迭代器是指可在容器对象上遍访的对象

1.3.2、assign()功能函数实现截取

assign()功能函数是vector容器的成员函数。

原型:

void assign(const_iterator first,const_iterator last);//两个指针,分别指向开始和结束的地方
void assign(size_type n.const T&x=T());//n只要构造的vector成员的个数,x指成员的数值,它的类型必须要与vector类型一致
vector<int> Arrs{1,2,3,4,5};
vector<int>::const_iterator first = Arrs.behin()+1;//第二个迭代器
vector<int>::const_iterator last = Arrs.end()+3//第三个迭代器
vector<int> Arrs2;
Arrs2.assign(first,last);//使用assign()成员函数将Arrs对应位置的值存入Arrs2数组中

1.3.3、功能打包

下面代码是将vector数组片段截取操作的函数打包。第一个函数的思路是给定区间左右边界相对于数组首迭代元素的位置,第二个元素是重载函数,思路是直接给定区间左右边界的迭代元素。

1.4、vector数组合并

数组合并是指将多个不同的vector数组合并到一个vector数组中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
05-29
C++ 中,vector 是一个动态数组容器,可以存储任意类型的数据。使用 vector 可以方便地进行动态内存分配和管理,而不需要手动进行内存分配和释放。 vector 提供了一系列的成员函数,可以方便地进行元素的插入、删除、查找和访问等操作。以下是一些常用的操作: 1. 创建 vector 对象: ```c++ #include <vector> std::vector<int> vec; // 创建一个空的 vector std::vector<int> vec1(10); // 创建一个包含 10 个默认值的 vector std::vector<int> vec2(10, 0); // 创建一个包含 10 个值为 0 的 vector std::vector<int> vec3 = {1, 2, 3, 4}; // 创建一个包含 4 个元素的 vector,初始值为 1, 2, 3, 4 std::vector<int> vec4(vec3); // 创建一个与 vec3 完全相同的新 vector ``` 2. 访问 vector 中的元素: ```c++ std::vector<int> vec = {1, 2, 3, 4}; std::cout << vec[0] << std::endl; // 访问第一个元素,输出 1 std::cout << vec.at(2) << std::endl; // 访问第三个元素,输出 3 std::cout << vec.front() << std::endl; // 访问第一个元素,输出 1 std::cout << vec.back() << std::endl; // 访问最后一个元素,输出 4 ``` 3. 插入和删除元素: ```c++ std::vector<int> vec = {1, 2, 3, 4}; vec.push_back(5); // 在末尾插入元素 5 vec.insert(vec.begin() + 2, 10); // 在第三个位置插入元素 10 vec.erase(vec.begin() + 1); // 删除第二个元素 ``` 4. 获取 vector 中的信息: ```c++ std::vector<int> vec = {1, 2, 3, 4}; std::cout << vec.size() << std::endl; // 输出 vector 的大小,即元素个数,输出 4 std::cout << vec.empty() << std::endl; // 判断 vector 是否为空,输出 0(因为不为空) ``` vector 还提供了一些其他的函数,如排序、反转、查找等,具体可以参考 C++ 标准库的文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值