0
点赞
收藏
分享

微信扫一扫

C++ 之 Vector数组基础用法介绍


目录

​​前言​​

​​一、Vector数组简介​​

​​1、引入​​

​​2、Vector数组概念​​

​​二、Vector数组用法​​

​​1、数组的初始化​​

​​1.构造函数​​

​​2.常用初始化方式代码示例​​

​​3.通过insert初始化​​

​​2、Vector的用法​​

​​3、Vector的算法​​

前言

如果你有什么问题,希望跟我能够一起交流 

一、Vector数组简介

1、引入

在写C++代码的时候,经常会遇到Vector数组,特别是在学习OpenCV的时候,经常会碰到Vector数组。

2、Vector数组概念

在c++中,vector是一个十分有用的容器。那么,他是一个什么样的容器呢?

Vector(向量)是一个封装了动态大小数组的顺序容器(Sequence Container)。跟任意其它类型容器一样,它能够存放各种类型的对象。可以简单的认为,Vector是一个能够存放任意类型的动态数组,它可以增加和压缩数据

对于C++来说,vector在C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库

二、Vector数组用法

1、数组的初始化

1.构造函数

Vector数组初始化调用了构造函数,Vector数组构造函数主要有以下几个:

vector()                       // 创建一个空vector
vector(int nSize) // 创建一个vector, 元素个数为nSize
vector(int nSize, const t& t) // 创建一个vector,元素个数为nSize, 且值均为t
vector(const vector&) // 复制构造函数
vector(begin, end) // 复制[begin, end)区间内另一个数组的元素到vector中

2.常用初始化方式代码示例

1.不带参数的构造函数初始化

这种方式是默认初始化,vector为空, size为0,表明容器中没有元素,而且 capacity 也返回 0,意味着还没有分配内存空间。适用于元素个数未知,需要在程序中动态添加的情况

#include<vector>

vector<int> vec1; //初始化一个size为0的vector

2.带参数的构造函数初始化

(1)默认值初始化

Vec2中将包含5个元素,每个元素进行缺省的值初始化,对于int,也就是被赋值为0,因此Vec2被初始化为包含5个0。当程序运行初期元素大致数量可预知,而元素的值需要动态获取的时候,可采用这种初始化方式

//初始化size,但每个元素值为默认值
vector<int> Vec2(5); //初始化了5个默认值为0的元素

(2)指定值初始化

Vec3被初始化为包含5个值为1的int。当程序运行初期元素大致数量可预知,而元素的值几乎相同时,可采用这种初始化方式

//初始化size,并且设置初始值
vector<int> vec3(5,1); //初始化了5个值为1的元素

(3)复制构造函数初始化

复制构造函数有两种方式,这两种方式等价 ,后者初始化为前者的拷贝,两者类型必须相同,也就是同为int的vector类型,初始化后,两者具有相同的容量和元素,适用于两个数组类型相同时的重命名或数据传递等情况

vector<int> vec4 = vec2;
vector<int> vec5(vec2)

(4)直接赋值初始化

初始化为列表中元素的拷贝,列表中元素必须与Vec6的元素类型相容,本例中必须是与整数类型相容的类型,整形会直接拷贝,其他类型会进行类型转换。

vector<int> Vec6 = { 1,2,3,0,4,5,6,7 };
vector<int> Vec7{ 1,2,3,0,4,5,6,7 };

3.通过insert初始化

用insert初始化Vector数组的方法有很多,废话不多说,用代码说话。

//insert初始化方式将同类型的迭代器对应的始末区间(左闭右开区间)内的值插入到vector中
vector<int> vec8;
//将vec2[0]~vec2[2]插入到vec8中,vec8.size()由0变为3
vec8.insert(vec8.begin(), vec2.begin(), vec2.begin() + 3);
//insert可以插入m个值为n的元素
//在vec8开始位置处插入6个6
vec8.insert(vec8.begin(), 6, 6);

//insert也可通过数组地址区间实现插入
int a[6] = { 6,6,6,6,6,6 };
vector<int> vec9;
//将a的所有元素插入到b中
vec9.insert(vec9.begin(), a, a + 7);

2、Vector的用法

相关用法,请看代码

//1.尾部插入及删除数字
vec2.push_back(1); //尾部插入元素
vec2.pop_back() //删除尾部元素

//2.使用下标访问元素,
cout << vec2[0] << endl; //记住下标是从0开始的。

//3.使用迭代器访问元素.
vector<int>::iterator it;
for (it = vec2.begin(); it != vec2.end(); it++)
cout << *it << endl;

//4.插入元素:
vec2.insert(vec2.begin() + i, a); //在第i + 1个元素前面插入a;


//5.删除元素:
vec2.erase(vec2.begin() + 2); //删除第3个元素

vec2.erase(vec2.begin() + i, vec2.end() + j); //删除区间[i, j - 1]; 区间从0开始

//6.求数组大小:
vec2.size();

//7.清空 :
vec2.clear();

3、Vector的算法

主要有两个算法,一个是逆序,一个是排序,其他算法我们都可以自己编写,把这两个算法分享给大家:

注意,sort函数要添加头文件:

#include<algorithm>

算法如下:

//1.将元素逆序
reverse(vec2.begin(), vec2.end()); //将元素翻转,即逆序排列!

//2.将元素排序
sort(vec2.begin(), vec2.end()); //(默认是按升序排列, 即从小到大).

举报

相关推荐

0 条评论