欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

TIL 22:vector的基本操作

程序员文章站 2022-03-01 23:18:51
...

今日工作感想:一顿操作猛如虎,结果还是最蠢的方法最好用。就当是复习了一下vector的用法吧。

1.push_back()
最基础的在末尾追加元素,不必多说。

2.begin(),end(),rbegin(),rend()
注意区间是左闭右开的,借用C++ Primer的图示如下:
TIL 22:vector的基本操作
3.insert()
在指定的位置之前插入元素,也可以用来拼接两个vector。

vector<int> vec1;
vector<int> vec2;
/*
各种push_back...
*/
vec2.insert(vec2.begin()+1, 3); //在第2个元素之前插入3
vec1.insert(vec1.end(), vec2.begin(), vec2.end()); //将vec2追加到vec1后面

4.clear()
清空,size会变成0,但是vector的capacity不变;只删除数据,并未释放vector的内存。

5.assign()
赋值,可以用来把一个vector的值赋给另一个vector。会把vector中原先的值清除,因此在assign()之前无需使用clear()。

vector<int> vec1;
vector<int> vec2;
/*
各种push_back...
*/
vec1.assign(vec2.begin(), vec2.end()); //把vec2赋给vec1

6.erase()
真的删除元素。划重点——返回值是一个迭代器,该迭代器指向被删除元素后面的元素。跟迭代器一起使用时要注意。

vector<int> vec;
vector<int>::iterator it;
/*
push_back...
*/
for (it = vec.begin(); it != vec.end(); ) {
	if (*it == 3) 
		it = vec.erase(it);
	else
		it++;
}

7.swap()
交换两个vector,一个trick是用来跟一个空的vector交换,于是清空并且释放内存(capacitor变为0)。

vector<int> vec;
/*
push_back...
*/
vector<int>().swap(vec); //free vec