加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C++ vector中如何删除重复元素,且保留原顺序

(2013-04-23 00:40:50)
标签:

vector

删除重复元素

保持顺序

不变

c语言

分类: 工作学习

C++中经常用到vector,要删除其中的重复元素而又保留原来的顺序,方法该有多种,只说两种如下:

(1)操作vector本身:

#include <vector>
#include <iostream>
using namespace std;
int main()
{
    int aa[]={4,2,1,3,3,4,4,1,2};
    vector<int> test(aa,aa+9);
    vector<int>::iterator it,it1;  
    for (it=++test.begin(); it != test.end();)
    {
        it1 = find(test.begin(),it,*it);
        if(it1 != it)
            it=test.erase(it);           
        else  
            it++;       
    }
    cout<<"result:"<<endl;
    for (it=test.begin();it<test.end();it++)
            cout<<*it;
            cout<<endl;
  
    system("pause");
}

 

(2)新建vector保存有序不重复元素:

#include <vector>
#include <iostream>
using namespace std;
int main()
{
    int aa[]={4,2,1,3,3,4,4,1,2};
    vector<int> test(aa,aa+9);
    vector<int> hehe;
    vector<int>::iterator it1,it2;  
    for (it1 = test.begin();it1 < test.end();it1++)
    {
        it2 = find(test.begin(),it1,*it1);
        if (it2 == it1)
            hehe.push_back(*it1);
        }
    cout<<"result:"<<endl;
    for (it1=hehe.begin();it1<hehe.end();it1++)
            cout<<*it1;
            cout<<endl;  
    system("pause");
}

两者运行结果都一样:4213

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有