cb43a_c++_STL_算法_删除_(1)remove_remove_if

cb43a_c++_STL_算法_删除_(1)remove_remove_if
remove()
remove_if()

注意:
1.并不是真正的删除,而是把后面的元素向前移动,覆盖被删除元素,元素个数并没有减少
最后的一位或者两个的数据向前移动后,最后的数据没有其他数据覆盖,所以数据依然存在。
2.返回值是:新的逻辑终点,删除后,都采用逻辑终点。
error C2760: 语法错误: 意外的令牌“标识符”,预期的令牌为“;”
vs2017打开项目工程----> 属性 ---> c/c++ --> 语言 --> 符合模式 修改成否即可

//真正的删除用list的成员函数erase
 

/*cb43a_c++_STL_算法_删除_(1)remove_remove_if
remove()
remove_if()

注意:
1.并不是真正的删除,而是把后面的元素向前移动,覆盖被删除元素,元素个数并没有减少
最后的一位或者两个的数据向前移动后,最后的数据没有其他数据覆盖,所以数据依然存在。
2.返回值是:新的逻辑终点,删除后,都采用逻辑终点。
error C2760: 语法错误: 意外的令牌“标识符”,预期的令牌为“;”
vs2017打开项目工程----> 属性 ---> c/c++ --> 语言 --> 符合模式 修改成否即可

//真正的删除用list的成员函数erase


*/
#include <iostream>
#include <algorithm>
#include <list>
#include <vector>
#include <functional>


using namespace std;
template <typename TT>
void print(TT &il)
{
	for (TT::iterator iter = il.begin(); iter != il.end(); ++iter)
	
		cout << *iter << ' ';
	cout << endl;
}

int main()
{
	list<int> ilist;
	for (int i = 1; i <= 6; ++i)
	{
		ilist.push_front(i);
		ilist.push_back(i);
	}
	print(ilist);
	
	list<int>::iterator end;
	end=remove(ilist.begin(), ilist.end(), 3);//返回的是一个逻辑终点。不是ilist.end的位置
	cout << "3删除后的情况:" << endl;
	print(ilist);

	cout << "返回一个逻辑终点的情况:" << endl;

	for (list<int>::iterator iter = ilist.begin(); iter != end; ++iter)
	{
		cout << *iter << ' ';
		
	}
	cout << endl;
	cout << "一共删除了:" << distance(end, ilist.end()) << " 个元素" << endl;

	cout << "真正的删除,erase后的结果。" << endl;
	ilist.erase(end, ilist.end());
	print(ilist);

	vector<int> ivec;
	for (int i = 2; i <= 6; ++i)
		ivec.push_back(i);
	for (int i = 4; i <= 9; ++i)
		ivec.push_back(i);
	for (int i = 1; i <= 7; ++i)
		ivec.push_back(i);
	cout << "vector里面的数据:" << endl;
	print(ivec);

	cout << "删除5,remove与erase结合" << endl;
	ivec.erase(remove(ivec.begin(), ivec.end(), 5),ivec.end());
	print(ivec);

	cout << "remove_if结合预定义的函数对象进行操作,删除小于5的数,实现真正的删除" << endl;
	//remove_if返回一个迭代器的位置,然后,erase迭代器之间的数据。
	ivec.erase(remove_if(ivec.begin(), ivec.end(), bind2nd(less<int>(), 5)), ivec.end());
	print(ivec);
	return 0;
}
发布了469 篇原创文章 · 获赞 211 · 访问量 95万+

猜你喜欢

转载自blog.csdn.net/txwtech/article/details/104475508