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 = ; i <= ; ++i)
{
ilist.push_front(i);
ilist.push_back(i);
}
print(ilist); list<int>::iterator end;
end=remove(ilist.begin(), ilist.end(), );//返回的是一个逻辑终点。不是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 = ; i <= ; ++i)
ivec.push_back(i);
for (int i = ; i <= ; ++i)
ivec.push_back(i);
for (int i = ; i <= ; ++i)
ivec.push_back(i);
cout << "vector里面的数据:" << endl;
print(ivec); cout << "删除5,remove与erase结合" << endl;
ivec.erase(remove(ivec.begin(), ivec.end(), ),ivec.end());
print(ivec); cout << "remove_if结合预定义的函数对象进行操作,删除小于5的数,实现真正的删除" << endl;
//remove_if返回一个迭代器的位置,然后,erase迭代器之间的数据。
ivec.erase(remove_if(ivec.begin(), ivec.end(), bind2nd(less<int>(), )), ivec.end());
print(ivec);
return ;
}

最新文章

  1. 用PS如何把图片调出时尚杂志色
  2. 【摘】top命令
  3. 用live writer写博客
  4. 用JS控制图片随鼠标移动
  5. 《使用wxWidgets进行跨平台程序开发》chap09——布局一个对话框
  6. thread跟Runnable实现多线程
  7. .NET SQL Server连接字符串句法
  8. Treap的读书笔记2
  9. 实现 select中指定option选中触发事件
  10. 原来,负载均衡可以这样用,多核CPU可以这样用
  11. 强化学习(八)价值函数的近似表示与Deep Q-Learning
  12. Maven -- 在进行war打包时排除不需要的文件
  13. 同一个菜品商家中心和erp价格显示不一致解决方案FAQ
  14. 字节输入流 FileInputStream
  15. c#代码文件上传和下载
  16. jquery 学习(三) - 遍历操作
  17. P3144 关闭农场 并查集 反向
  18. Implement strStr() leetcode java
  19. 壁虎书4 Training Models
  20. centos部署yapi爬坑记

热门文章

  1. IO流基础,创建File对象与方法是用
  2. Verilog代码和FPGA硬件的映射关系(一)
  3. linux静态网络设置
  4. vue-cli3的eslint配置问题
  5. [JavaWeb基础] 024.Socket编程之简单的聊天程序
  6. ForkJoinPool分支合并框架-工作窃取
  7. ATT&amp;CK红队评估实战靶场(一)
  8. HTML5+CSS+JS 贪吃蛇demo
  9. Telegraf和Grafana监控多平台上的SQL Server
  10. Rocket - devices - PLIC