标签:out template ons original div 范围 red ++i cat
remove(first, last, value) 函数移除[first, last) 范围的 value,返回新值范围的尾后迭代器
在头文件 <algorithm>中,声明如下
template< class ForwardIt, class T > ForwardIt remove( ForwardIt first, ForwardIt last, const T& value );//first,last都是迭代器,value是值或对象,返回新值范围的尾后迭代器
使用方法如下
vector<int> a = {11, 0, 2, 3, 10, 0, 0, 8, 0}; cout << "Original size : " << a.size() << endl; auto itend = remove(a.begin(), a.end(), 0); cout << "after REMOVE, size : " << a.size() << endl; for (auto it = a.begin(); it != a.end(); ++it) { cout << *it << " "; } cout << endl; //结果:11 2 3 10 8 0 0 8 0 //可以这么理解,把所以非value的值都向前移动,数组的大小不变,尾部剩下的部分值不变。 //remove并没有真正删除元素value,而是返回新值范围的尾后迭代器。 //可以用erase配合删除 a.erase(itend, a.end());// 若想删除value值可以直接 a.erase(remove(a.begin(), a.end(), value), a.end()); for (int& k : a ) { cout << k << " "; } cout << endl; // 结果:11 2 3 10 8
remove_if() 函数
template< class ForwardIt, class UnaryPredicate > ForwardIt remove_if( ForwardIt first, ForwardIt last, UnaryPredicate p ); //从范围 [first, last) 移除所有满足特定判别标准的元素,并返回范围新结尾的尾后迭代器。
标签:out template ons original div 范围 red ++i cat
原文地址:https://www.cnblogs.com/htj10/p/9296597.html