cb45a_c++_STL_算法_删除_(3)_unique(唯一的意思)删除连续性的重复的数据
cb45a_c++_STL_算法_删除_(3)_unique(唯一的意思)删除连续性的重复的数据
unique(b,e),删除连续性的,删除重复的数据,比如如果有两个连续的5,5,则留下一个。
unique(b,e,p)
unique_copy(b1,e1,b2)
unique_copy(b1,e1,b2,p)
	copy(source, source + sourceNum,back_inserter(ilist));//ilist是空的,无数据,所以需要,back_inserter
删除性算法
注意:
  1.应该有一个unique_if(),但是没有
  2.应该有一个unique_copy_if(),但是没有
STL算法都是针对容器使用的。
   error C2760: 语法错误: 意外的令牌“标识符”,预期的令牌为“;”
   vs2017打开项目工程----> 属性 ---> c/c++ --> 语言 --> 符合模式 修改成否即可
/*cb45a_c++_STL_算法_删除_(3)_unique(唯一的意思)删除连续性的重复的数据
unique(b,e),删除连续性的,删除重复的数据,比如如果有两个连续的5,5,则留下一个。
unique(b,e,p)
unique_copy(b1,e1,b2)
unique_copy(b1,e1,b2,p)
copy(source, source + sourceNum,back_inserter(ilist));//ilist是空的,无数据,所以需要,back_inserter 删除性算法 注意:
1.应该有一个unique_if(),但是没有
2.应该有一个unique_copy_if(),但是没有 STL算法都是针对容器使用的。
error C2760: 语法错误: 意外的令牌“标识符”,预期的令牌为“;”
vs2017打开项目工程----> 属性 ---> c/c++ --> 语言 --> 符合模式 修改成否即可
*/ #include <iostream>
#include <algorithm>
#include <functional>
#include <iterator>
#include <list> using namespace std; template <typename TT2>
void print(TT2 &ilist)
{
for (TT2::iterator iter = ilist.begin(); iter != ilist.end(); ++iter)
cout << *iter << ' ';
cout << endl;
}
bool differenceOne(int elem1, int elem2)//前一个比后一个大1或者小于1
{
return elem1 + == elem2 || elem1 - == elem2;
} int main()
{
int source[] = {,,,,,,,,,,,,,,,,};
int sourceNum = sizeof(source) / sizeof(source[]);
list<int> ilist;
copy(source, source + sourceNum,back_inserter(ilist));//ilist是空的,无数据,所以需要,back_inserter
print(ilist); cout << "删除连续重复的数据,只留下一个" << endl;
list<int>::iterator pos;
pos=unique(ilist.begin(), ilist.end());//返回的是迭代器的位置,定位在删除后的位置的下一个位置。
for (list<int>::iterator iter = ilist.begin(); iter != pos; ++iter)
cout << *iter << ' ';
cout << endl;
cout << "删除前:" << endl; copy(source, source + sourceNum, ilist.begin());
print(ilist); // 3,2,5,7,6,
//3比2大,把2删除,剩余:3,5,7,6
//3,5,比较,5大不作处理。
//5,7,不作处理
//7,6,把6删除。
//剩余3,5,7 //cout << "这里的greater<>(),作用是如果前面的数比后面的数大,则删除后面的数" << endl;
pos = unique(ilist.begin(), ilist.end(), greater<int>()); cout << "删除后:" << endl;
for (list<int>::iterator iter = ilist.begin(); iter != pos; ++iter)
cout << *iter << ' ';
cout << endl; copy(source, source + sourceNum, ilist.begin());
print(ilist);
cout << "使用unique_copy:" << endl;
unique_copy(ilist.begin(), ilist.end(), ostream_iterator<int>(cout, " "));
cout << endl; cout << "前一个比后一个大1或者小于1,就删除后面的一个数" << endl;
unique_copy(ilist.begin(), ilist.end(), ostream_iterator<int>(cout, " "), differenceOne); return ;
}
cb45a_c++_STL_算法_删除_(3)_unique(唯一的意思)删除连续性的重复的数据的更多相关文章
- cb44a_c++_STL_算法_删除_(2)remove_copy_remove_copy_if
		
cb44a_c++_STL_算法_删除_(2)remove_copy_remove_copy_if remove_copy()//在复制过程中删除一些数据remove_copy_if() 删除性算法: ...
 - cb43a_c++_STL_算法_删除_(1)remove_remove_if
		
cb43a_c++_STL_算法_删除_(1)remove_remove_ifremove()remove_if() 注意:1.并不是真正的删除,而是把后面的元素向前移动,覆盖被删除元素,元素个数并没 ...
 - cb37a-_c++_STL_算法_复制元素copy_copy_backward
		
cb37a-_c++_STL_算法_复制元素copy_copy_backward copy(),同一个容器内部区间的拷贝,或者容器与容器之间的拷贝copy_backward()//向后copy 注意: ...
 - cb51a_c++_STL_算法_根据第n个元素排序nth_element
		
cb51a_c++_STL_算法_根据第n个元素排序nth_elementnth_element(b,n,e),比如最大的5个数排序,或者最小的几个数nth_element(b,n,e,p)对比:pa ...
 - cb50a_c++_STL_算法_局部排序partial_sort
		
cb50a_c++_STL_算法_局部排序partial_sort partial_sort(b,se,e)排序一部分,begin,source end,endcout << " ...
 - cb49a_c++_STL_算法_对所有元素排序_sort_stable_sort
		
cb49a_c++_STL_算法_对所有元素排序_sort_stable_sort sort(b,e) sort(b,e,p) stable_sort(b,e) stable_sort(b,e,p) ...
 - cb48a_c++_STL_算法_重排和分区random_shuffle_stable_partition
		
cb48a_c++_STL_算法_重排和分区random_shuffle_stable_partition random_shuffle()//重排,随机重排,打乱顺序 partition()分区,把 ...
 - cb47a_c++_STL_算法_排列组合next_prev_permutation
		
cb47a_c++_STL_算法_排列组合next_prev_permutation 使用前必须先排序.必须是 1,2,3或者3,2,1.否者结果不准确.如果, 1,2,4,6.这样数据不会准确nex ...
 - cb46a_c++_STL_算法_逆转和旋转reverse_rotate函数advance
		
cb46a_c++_STL_算法_逆转和旋转reverse_rotateSTL算法--变序性算法reverse() 逆转reverse_copy()一边复制一般逆转rotate()旋转,某个位置开始前 ...
 
随机推荐
- PHP基础-自定义函数-变量范围-函数参数传递
			
一.自定义函数 function 函数名([形式参数1,形式参数2,....形式参数n]){ //各种PHP代码.... //...... return ...
 - MySQL知识-redis实例
			
规划.搭建过程:6个redis实例,一般会放到3台硬件服务器注:在企业规划中,一个分片的两个分到不同的物理机,防止硬件主机宕机造成的整个分片数据丢失.端口号:7000-7005 # 1. 安装集群插件 ...
 - eatwhatApp开发实战(一)
			
开发背景: 当你想用抛硬币来决定事情的时候,那么硬币抛起的瞬间,你就有答案了.一样的,吃啥?eatwhat点开,按钮一点,你就可以知道你中午要吃啥. 话不多说,项目开发走起 ADT点开,New==&g ...
 - Node.js躬行记(2)——文件系统和网络
			
一.文件系统 fs模块可与文件系统进行交互,封装了常规的POSIX函数.POSIX(Portable Operating System Interface,可移植操作系统接口)是UNIX系统的一个设计 ...
 - Bitwarden_rs搭建
			
最近LastPass网络极其不稳定,正好闲下来找到了Bitwarden_rs这个替代品,感觉不错,分享记录下部署过程. 一.Docker方式部署 #获取镜像 docker pull bitwarden ...
 - ES6-Promise承诺
			
1.扩展:ajax 1.1 代码如下 $.ajax({ url:'地址', type:'get/post', data:{}, dataType:'json/jsonp', success:funct ...
 - Rocket - debug - TLDebugModuleInner - Abstract Command State Machine
			
https://mp.weixin.qq.com/s/RcXI8uEHvZHGCvX3DoVR4Q 简单介绍TLDebugModuleInner中处理抽象命令时的状态机. 1. CtrlState 定 ...
 - jchdl - GSL实例 - DFlipFlop(D触发器)
			
https://mp.weixin.qq.com/s/7N3avTxTd2ZUnAcKg4w3Ig D触发器对边沿敏感,只有当相应的边沿出现时,才会触发D的值传播到输出Q.  引自:htt ...
 - 安装xlrd包的时候,总是报错:ERROR: Could not install packages due to an EnvironmentError: HTTPConnectionPool (host='127.0.0.1', port=8888):。。。
			
安装xlrd包的时候,总是报错:ERROR: Could not install packages due to an EnvironmentError: HTTPConnectionPool (ho ...
 - js匿名函数和date对象,math对象
			
匿名函数: <script type="text/javascript"> function (参数列表){ 要执行的语句块; } </script> 对象 ...