1. 模板类vector类似string类,可以在运行阶段设置vector对象的长度,可以在不同位置插入新数据,在这里我们看下vector常用的几种用法
2. 我们首先定义一个vector数组,
不指定数组长度,数组则为空
指定长度,不指定默认值,则值被赋予初始化的值
指定长度,指定默认值
指定长度,每个数组都指定不同的默认值
源码如下:
// Len_vector.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
#include <vector>
using namespace std;
// 根据传入的vector,输出vector的长度,和每个vector的值
void PrintVector(vector<int> param)
{
int size = param.size();
printf("\n\nsize:%d \t",size);
for (int i = 0; i < size; i++)
{
printf("pos[%d].%d \t", i, param[i]);
}
}
int main()
{
// 初始化vector数组,不存入任何值
vector<int> v1;
PrintVector(v1);
// 初始化vector数组,存入的值不指定,系统会默认为初始化0
vector<int> v2(2);
PrintVector(v2);
// 初始化vector数组,存入两个值,初始化为10
vector<int> v3(2, 10);
PrintVector(v3);
vector<int> v4(2, 10);
v4[0] = 110;
v4[1] = 119;
PrintVector(v4);
}
执行结果:
2. 在首、中、尾插入不同的值
首部插入值的时候我们使用begin()
在末尾插入值的时候使用end()
在中间插入值的时候,使用begin()+插入的位置
每次插入值后,数组的长度会自动增长
代码如下:
// Len_vector.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
#include <vector>
using namespace std;
// 根据传入的vector,输出vector的长度,和每个vector的值
void PrintVector(vector<int> param)
{
int size = param.size();
printf("\n\nsize:%d \t",size);
for (int i = 0; i < size; i++)
{
printf("pos[%d].%d \t", i, param[i]);
}
}
int main()
{
// 定义一个vector数组,当前容量是4个int,初始值都为10
vector<int> vi(2, 10);
PrintVector(vi);
// 在数组中间第[3]位插入数组888
vi.insert(vi.begin() + 1, 888);
PrintVector(vi);
// 在数组头部添加一个位置, 存入101
vi.insert(vi.begin(), 101);
PrintVector(vi);
// 在数组头部添加一个位置, 存入301
vi.insert(vi.end(), 301);
PrintVector(vi);
}
执行结果:
3. 删除不同位置的值
删除单个值,使用erase,参数使用begin()+指定的位置
删除多个值有两种方式 erase()中指定起始位置,和结束位置,删除的时候不包含结束位置
clear()删除整个数组
源码如下:
// Len_vector.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
#include <vector>
using namespace std;
// 根据传入的vector,输出vector的长度,和每个vector的值
void PrintVector(vector<int> param)
{
int size = param.size();
printf("\n\nsize:%d \t",size);
for (int i = 0; i < size; i++)
{
printf("pos[%d].%d \t", i, param[i]);
}
}
int main()
{
// 定义一个vector数组,当前容量是4个int,初始值都为10
vector<int> vi(8, 10);
vi[0] = 1000;
vi[1] = 1001;
vi[2] = 1002;
vi[3] = 1003;
vi[4] = 1004;
vi[5] = 1005;
vi[6] = 1006;
vi[7] = 1007;
PrintVector(vi);
// 删除【vi[1],vi[4])的值
vi.erase(vi.begin() + 1, vi.begin() + 4);
PrintVector(vi);
// 删除vi[i]的值
vi.erase(vi.begin() + 1);
PrintVector(vi);
// 删除vi头的值
vi.erase(vi.begin());
PrintVector(vi);
// 删除vi尾的值
vi.erase(vi.end()-1);
PrintVector(vi);
// 清空vi的值
vi.clear();
PrintVector(vi);
}
执行结果: