关于STL中vector使用unique()去重的问题
2016-10-05 09:45
423 查看
STL中Unique函数的作用是去除相邻重复元素
#include
#include
#include
using namespace std
int main()
{
int a[10] = {7,4,1,7,4,1,7,4,1,0};
sort(a,a+10);//小到大
vector<int>ver(a,a+10);
vector<int>::iterator iter = unique(ver.begin(),ver.end());
ver.erase(iter,ver.end());
for( int *t = ver.begin() ; t != ver.end() ; t ++ )
printf("%d ",*t);
return 0;
}
数组排完序之后的结果是a[10]={0,1,1,1,4,4,4,7,7,7};
故此段程序的输出结果是0 1 4 7
另外,也可以实现vector的不排序去重:
方法是在遍历的时候,将相等的元素除第一个外,后面的统统作标记。如:一个字符序列,可以用数字0来标记。应该说,直接将0赋值给这个元素。然后通过另一个容器,在遍历原容器的同时,将没有做标记的元素Push_back
到新容器中。
#include
#include
#include
using namespace std
int main()
{
int a[10] = {7,4,1,7,4,1,7,4,1,0};
sort(a,a+10);//小到大
vector<int>ver(a,a+10);
vector<int>::iterator iter = unique(ver.begin(),ver.end());
ver.erase(iter,ver.end());
for( int *t = ver.begin() ; t != ver.end() ; t ++ )
printf("%d ",*t);
return 0;
}
数组排完序之后的结果是a[10]={0,1,1,1,4,4,4,7,7,7};
故此段程序的输出结果是0 1 4 7
另外,也可以实现vector的不排序去重:
方法是在遍历的时候,将相等的元素除第一个外,后面的统统作标记。如:一个字符序列,可以用数字0来标记。应该说,直接将0赋值给这个元素。然后通过另一个容器,在遍历原容器的同时,将没有做标记的元素Push_back
到新容器中。
相关文章推荐
- 关于STL中vector使用unique()去重的问题
- 关于STL中vector使用unique()去重
- 关于vector删除某一些特定的值的使用方法和出错的问题详解.
- 关于STL的list,vector等用迭代器iterator,用erase删除元素出现的问题。
- C++复习之STL(二)——谈一谈关联式容器set和有序vector的使用选择问题
- 关于vector的vector(int)的使用问题
- 关于stl中transfrom使用时编译错误问题
- STL unique使用问题
- 关于STL容器中vector特定元素的删除问题
- 关于STL的list,vector等用迭代器iterator,用erase删除元素出现的问题。
- 关于MFC中使用vector的问题
- 关于vector的vector<vector<int>>的使用问题
- 关于使用request[this.控件名.Unique]获取控件值的问题
- 关于vector的size()的使用问题
- 有关STL使用上的一些注意事项。关于某些函数的参数问题。
- 关于使用vector时出现“Vector iterators incompatible!”问题注意细节
- 关于vector中使用erase删除元素后导致越界的问题
- 关于STL模板的使用效率与控制输出时最后不加空格问题
- 关于STL的vector查找问题 (解决NrNsNtNz_InTitle中 由 文本体中发现的标题未被正确识别出的NrNsNtNz)
- VS.NET里关于不能够使用向导的问题