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