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()旋转,某个位置开始前 ...
随机推荐
- mysql创建本地用户及赋予数据库权限的方法示例
大家在安装 mysql 时通常会生成一个超级用户 root,很多人之后就一直沿用这一个用户,虽然这会很方便,但超级用户权限太大,在所有地方使用它通常是一个安全隐患. 这一点跟操作系统的用户管理也是类似 ...
- PHP 操作结果集对象方法
<?php header('Content-type:text/html;charset=utf-8'); //建立 或者 关闭mysql服务器 @符号用于屏蔽错误信息 $link=@mysql ...
- PAT1034 有理数四则运算 (20分)
1034 有理数四则运算 (20分) 本题要求编写程序,计算 2 个有理数的和.差.积.商. 输入格式: 输入在一行中按照 a1/b1 a2/b2 的格式给出两个分数形式的有理数,其中分子和分母全 ...
- Alpha冲刺 —— 5.5
这个作业属于哪个课程 软件工程 这个作业要求在哪里 团队作业第五次--Alpha冲刺 这个作业的目标 Alpha冲刺 作业正文 正文 github链接 项目地址 其他参考文献 无 一.会议内容 1.展 ...
- Java实现 LeetCode 837 新21点(DP)
837. 新21点 爱丽丝参与一个大致基于纸牌游戏 "21点" 规则的游戏,描述如下: 爱丽丝以 0 分开始,并在她的得分少于 K 分时抽取数字. 抽取时,她从 [1, W] 的范 ...
- Java实现 LeetCode 609 在系统中查找重复文件(阅读理解+暴力大法)
609. 在系统中查找重复文件 给定一个目录信息列表,包括目录路径,以及该目录中的所有包含内容的文件,您需要找到文件系统中的所有重复文件组的路径.一组重复的文件至少包括二个具有完全相同内容的文件. 输 ...
- Java实现 LeetCode 551 学生出勤记录 I(暴力大法好)
551. 学生出勤记录 I 给定一个字符串来代表一个学生的出勤记录,这个记录仅包含以下三个字符: 'A' : Absent,缺勤 'L' : Late,迟到 'P' : Present,到场 如果一个 ...
- Java实现 LeetCode 438 找到字符串中所有字母异位词
438. 找到字符串中所有字母异位词 给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引. 字符串只包含小写英文字母,并且字符串 s 和 p ...
- Java实现 蓝桥杯VIP 算法训练 求指数
问题描述 已知n和m,打印n1,n2,-,nm.要求用静态变量实现.nm表示n的m次方.已知n和m,打印n1,n2,-,nm.要求用静态变量实现.nm表示n的m次方.(每行显示5个数,每个数宽为12, ...
- Java实现 LeetCode 355 设计推特
355. 设计推特 设计一个简化版的推特(Twitter),可以让用户实现发送推文,关注/取消关注其他用户,能够看见关注人(包括自己)的最近十条推文.你的设计需要支持以下的几个功能: postTwee ...