STL vector中的元素删除
来源:互联网 发布:破解网络 编辑:程序博客网 时间:2024/05/22 17:00
删除vector中的元素,最容易的方法就是使用vector的erase()函数。
vector vec;
for ( vector::iterator iter = vec.begin(); iter! = vec.end();)
{
if(某条件成立)
iter = vec.erase(iter);
else
iter ++;
}
如果要清空vector中的元素,可以使用erase()循环删除,也可以用clear()函数。
for ( vector::iterator iter = vec.begin(); iter! = vec.end();)
{
iter = vec.erase(iter);
}
//或者直接clear
vec.clear();
需要注意,如果vector中存储的元素是指针,那么erase()或者clear()并不会删除指针指向的对象或者内存空间,要小心内存泄漏问题。
此外,还需要注意的是,erase()函数虽然会删除指定位置的元素,但是元素所占用的内存空间并不会被释放掉,也就是说,被删除的元素所占的内存空间还是被vector占有的,而没有被系统回收。
要解决这个问题可以使用vector中的swap()函数。
假设vector vec起初有1000个元素,后来删掉500个,那么要释放掉那500个int所占的空间,可以这样:
std::vector(vec).swap(vec);
//上面这行代码相当于下面两行
//即先产生一个跟vec中现有内容相同且占用空间刚好满足其大小的vector tmp
//然后把tmp与vec对换
//当出了tmp的作用域(例如下面的一对大括号)后,tmp所占的空间就被释放掉了
{
std::vector tmp(vec); -------》》tmp里面存放500个元素,且大小空间是500*4;vec里面存放500个元素,且大小空间是1000*4
tmp.swap(vec); --------》》 将tmp与vec对调,tmp作为临时变量超出作用域后空间被释放掉,剩下的vec存放500个元素,大小空间是500*4
vector vec;
for ( vector::iterator iter = vec.begin(); iter! = vec.end();)
{
if(某条件成立)
iter = vec.erase(iter);
else
iter ++;
}
如果要清空vector中的元素,可以使用erase()循环删除,也可以用clear()函数。
for ( vector::iterator iter = vec.begin(); iter! = vec.end();)
{
iter = vec.erase(iter);
}
//或者直接clear
vec.clear();
需要注意,如果vector中存储的元素是指针,那么erase()或者clear()并不会删除指针指向的对象或者内存空间,要小心内存泄漏问题。
此外,还需要注意的是,erase()函数虽然会删除指定位置的元素,但是元素所占用的内存空间并不会被释放掉,也就是说,被删除的元素所占的内存空间还是被vector占有的,而没有被系统回收。
要解决这个问题可以使用vector中的swap()函数。
假设vector vec起初有1000个元素,后来删掉500个,那么要释放掉那500个int所占的空间,可以这样:
std::vector(vec).swap(vec);
//上面这行代码相当于下面两行
//即先产生一个跟vec中现有内容相同且占用空间刚好满足其大小的vector tmp
//然后把tmp与vec对换
//当出了tmp的作用域(例如下面的一对大括号)后,tmp所占的空间就被释放掉了
{
std::vector tmp(vec); -------》》tmp里面存放500个元素,且大小空间是500*4;vec里面存放500个元素,且大小空间是1000*4
tmp.swap(vec); --------》》 将tmp与vec对调,tmp作为临时变量超出作用域后空间被释放掉,剩下的vec存放500个元素,大小空间是500*4
}
如果要将vector vec的空间全部删掉,可以这样:
{
std:vector tmp(0);
tmp.swap(vec);
}
0 0
- STL vector中的元素删除
- STL vector中的元素删除
- STL vector中的元素删除
- STL vector 删除元素
- C++:STL:vector删除元素
- vector中的元素删除
- STL—vector删除重复元素
- 13.c++-stl::vector删除重复元素
- STL—vector删除重复元素
- C++ stl list、map、vector删除元素
- stl的vector,map,list删除元素
- STL—vector删除重复元素
- STL—vector删除重复元素
- STL中Vector元素的删除
- STL中vector删除一个元素
- STL—vector删除重复元素
- STL系列(5):vector 删除重复元素
- 删除Vector中的相等元素
- 牛逼博客链接集合
- 验证身份证号方法
- php学习基础篇之html
- [BZOJ1192] [HNOI2006]鬼谷子的钱袋
- iOS 9 App Transport Security
- STL vector中的元素删除
- VS2013常用快捷键:
- MPAndroidChart的具体属性方法(二)
- Struts2标签<s:checkboxlist>回显问题
- 洛谷1198最大数(线段树)
- Broadcast监听网络状态,ping判断网络是否可用
- 找出元素item在给定数组arr中的位置,存在输出位置,不存在输出-1
- Linux 下分卷压缩打包命令
- 【转载】CSS 的优先级机制[总结]