C++中vector常用函数总结

一,vector

vector可以理解为一个边长数组,可以存储不同的类型,int ,double,char,结构体等。

也可以才能出STL标准容器,如set,string,vector等

二,构造函数

vector(size_t n,T val) //用n个T类型的val初始化

vector(InputIterator first,InputIterator last) //用迭代器区间[first,last)初始化

vector(const vector& x) //复制出一份x

复制代码
void Tets_vector1()
{
	vector<int> v1(5, 1);    //1 1 1 1 1
	vector<int> v2(v1);      //1 1 1 1 1
	vector<int> v3(v1.begin(), v1.end());  /1 1 1 1 1
}

三,初始化方法

1,使用圆括号赋值

也就是调用构函数

vector<int> v(5, 1);

for (auto x : v)

cout << x << " ";

//输出 1 1 1 1 1

2,使用花括号赋值

vector<int> v2{ 1,2,3,4,5 };

for (auto x : v2)

cout << x << " ";

cout << endl;

//输出1 2 3 4 5

四,元素访问(遍历)

可以使用 进行下标直接访问和遍历,也可以使用迭代器进行访问和遍历

复制代码
void Test_vector2()
{
	//下标
	vector<int> v(5, 1);
	for (int i = 0; i < v.size(); i++)
		cout << v[i] << " ";
	cout << endl;
	//迭代器
	vector<int>::iterator it = v.begin();
	while (it != v.end())
	{
		cout << *it << " ";
		it++;
	}
	cout << endl;
}

五,常用函数

1,push_back

**v.push_back(x),**就是在vector容器后面添加一个元素x,时间复杂度为O(1)

void Tets_vector4()

{

vector<int> v;

for (int i = 0; i < 3; i++)

v.push_back(i);

for (auto x : v)

cout << x << " ";

cout << endl;

}

2,insert()

void insert(iterator it,T val) //在迭代器处插入值val

void insert(iterator it,InputIterator first,InputIterator last) //在迭代器it前插入区间[first,last)

iterator insert(iterator,size_t n,T val) //在迭代器处插入n个val

复制代码
void Tets_vector4()
{
	vector<int> v{ 1,2,3,4,5 };
	v.insert(v.begin(), 6);   //1前插入6
	for (auto e : v)
		cout << e << " ";
	cout << endl;

	vector<int> v1{ 8,9 };
	v1.insert(v1.begin(), v.begin(), v.end());  //开始位置前插入V
	for (auto e : v1)
		cout << e << " ";
	cout << endl;

	v1.insert(v1.begin(), 3, 5);    //开始位置前插入3个5
	for (auto e : v1)
		cout << e << " ";
	cout << endl;
}

3,pop_back()

**pop_back()**可以删除vector尾部的元素,时间复杂度为O(1)

复制代码
void Tets_vector5()
{
	vector<int> v{ 1,2,3,4,5 };
	v.pop_back();

	for (auto e : v)
		cout << e << " ";
	cout << endl;

}

4,size(),capacity()

**size()**用来获取vector容器的元素个数,时间复杂度为O(1),size()返回类型为size_t。

**capacity()**用来获取vector容器的容量大小,时间复杂度为O(1),capacity()返回类型为size_t.

5,resize()

**resize()**用来调整size()的。

resize(size_t n,T val)

//开辟n个空间,并初始化为val

//如果之前有空间,就会将空间大小调整到n,并将新开的空间初始化为val,原先的值不变

复制代码
void Tets_vector7()
{
	vector<int> v{ 1,2,3,4,5 };
	v.resize(8, 1);
	for (auto e : v)
		cout << e << " ";
	cout << endl;
}

6,clear()

**clear()**用来清空vector中的所有元素,时间复杂度为O(N),N为vector中的元素个数:

复制代码
void Test_vector8()
{
	vector<int> v;
	for (int i = 1; i <= 3; i++)
		v.push_back(i);
	cout << v.size() << endl;

	v.clear();
	cout << v.size() << endl;
}

7,erase()

**erase()**有两种用法:删除单个元素、删除一个区间内所有元素。时间复杂度为O(N)。

1,删除单个元素

erase(it) //删除迭代器处的元素

void Test_vector9()

{

vector<int> v{ 1,2,3,4,5 };

for (auto e : v)

cout << e << " ";

cout << endl;

v.erase(v.end() - 2);

for (auto e : v)

cout << e << " ";

cout << endl;

}

输出结果

1 2 3 4 5

1 2 3 5

2,删除一个区间的所有元素

erase(first, last) 即删除**[first, last)**内的所有元素:

void Test_vector10()

{

vector<int> v;

for (int i = 1; i <= 5; i++) {

v.push_back(i); //将1、2、3、4、5 依次插入v的队尾

}

v.erase(v.begin() + 1, v.begin() + 3); //删除2和3

for (auto it = v.begin(); it != v.end(); it++) {

cout << *it << " ";

}

}

输出结果

1 4 5

相关推荐
这是个栗子10 分钟前
前端开发中的常用工具函数(九)
开发语言·javascript·ecmascript·at
啦啦啦啦啦zzzz10 分钟前
算法:回溯算法
c++·算法·leetcode
蓝创工坊Blue Foundry17 分钟前
图片文字提取到 Excel:批量任务如何先定义要交付的字段
运维·服务器·开发语言·数据库·自动化·ocr·excel
会飞的小新21 分钟前
C 标准库之 <fenv.h> 详解与深度解析
c语言·开发语言·microsoft
IT探索24 分钟前
Linux 查找文件指令总结
linux·算法
Lzg_na27 分钟前
订阅发布模块事例
c++
郝学胜-神的一滴33 分钟前
[简化版 GAMES 104] 现代游戏引擎 02:拆解现代游戏引擎5+1层级架构,吃透引擎底层核心逻辑
c++·unity·架构·游戏引擎·图形渲染·unreal engine·系统设计
汉克老师41 分钟前
2026年CSP-J初赛分数线-----预测
c++·csp-j·小学生·学c++编程
脱胎换骨-军哥42 分钟前
C++数据库存储引擎内核开发:B+树索引与MVCC并发控制的完整实现
数据库·c++·b树
Lumos1861 小时前
51单片机从零到实战(完结)——后续学习路线建议
算法