#include <iostream>
#include <algorithm>
#include <vector>
#include <iterator>
using namespace std;
void operator-=(vector<int*>& vec, size_t erased_number)
{
size_t retained_num = 0;
if (erased_number >= vec.size()){ retained_num = 0; }
else{ retained_num = vec.size() - erased_number ; }
{
vector<int*> tmp;
tmp.reserve(retained_num);
copy(vec.begin(), vec.begin()+retained_num, back_inserter(tmp));
for_each(
vec.begin()+retained_num,
vec.end(),
[](int* ptr){ if(ptr) delete ptr; }
);
vec.swap(tmp);
}
}
int main()
{
vector<int*> vec(1000);
cout<<"size="<<vec.size() << " capacity="<<vec.capacity() << endl;
vec-=400;
cout<<"size="<<vec.size() << " capacity="<<vec.capacity() << endl;
vec-=700;
cout<<"size="<<vec.size() << " capacity="<<vec.capacity() << endl;
}
学习笔记:如何把数组缩小
最新推荐文章于 2024-06-28 10:11:08 发布
本文介绍了一种在C++中使用自定义操作符来实现从vector容器中删除指定数量元素的方法。通过重载 -= 操作符,可以方便地移除vector中的元素,并释放被删除元素占用的内存。
11万+

被折叠的 条评论
为什么被折叠?



