vector的基本操作

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

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

2.begin(),end(),rbegin(),rend()
注意区间是左闭右开的,借用C++ Primer的图示如下:
fig
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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值