容器中clear()和erase()的区别



1、vector::clear()函数的作用是清空容器中的内容,但如果是指针对象的话,并不能清空其内容,必须要像以下方法一样才能达到清空指针对象的内容:

  1. vector<int*> xx;  
  2. for(int it=0;it!=xx.size();++it)  
  3. {  
  4.     delete xx[it];  
  5. }  
  6. xx.clear();  
vector<int*> xx;
for(int it=0;it!=xx.size();++it)
{
	delete xx[it];
}
xx.clear();



但并不回收内存,但你可以通过swap()函数来巧妙的达到回收内存的效果:

  1. xx.clear();  
  2. xx.swap(vector<int>());  
xx.clear();
xx.swap(vector<int>());


2、vector::erase()用于清空容器中的内容以及释放内存,并返回指向删除元素的下一个元素的迭代器。

erase:

erasearray:
array 参数是要清除的 数组 变量的名称。
iterator erase( iterator pos );  // 删除pos指向的字符, 返回指向下一个字符的 迭代器 ,
iterator erase( iterator start, iterator end ); // 删除从start到end的所有字符, 返回一个 迭代器 ,指向被删除的最后一个字符的下一个位置
basic_string &erase(  size_type index = 0, size_type num = npos ); // 删除从index索引开始的num个字符, 返回*this.
参数index 和 num 有默认值, 这意味着erase()可以这样调用:只带有index以删除index后的所有字符,或者不带有任何参数以删除所有字符.

原理是向前挪移一个位置。
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值