今日工作感想:一顿操作猛如虎,结果还是最蠢的方法最好用。就当是复习了一下vector的用法吧。
1.push_back()
最基础的在末尾追加元素,不必多说。
2.begin(),end(),rbegin(),rend()
注意区间是左闭右开的,借用C++ Primer的图示如下:
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