首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >C++中vector常用函数总结

C++中vector常用函数总结

作者头像
用户11719958
发布2025-12-30 14:30:27
发布2025-12-30 14:30:27
1760
举报

一,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

代码语言:javascript
复制
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  

 四,元素访问(遍历)

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

代码语言:javascript
复制
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

代码语言:javascript
复制
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)

代码语言:javascript
复制
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,原先的值不变

代码语言:javascript
复制
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中的元素个数:

代码语言:javascript
复制
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 

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-10-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一,vector
  • 二,构造函数
  • 三,初始化方法
  •  四,元素访问(遍历)
  •  五,常用函数
    • 1,push_back
    • 2,insert() 
    • 3,pop_back() 
    • 4,size(),capacity() 
    • 5,resize()
    •  6,clear()
    • 7,erase()
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档