未从矢量中删除重复数据

时间:2017-11-07 07:59:34

标签: c++ vector

我有以下程序

#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
std::string value;
    std::vector<std::string>v;
    v.push_back("tuhin");
    v.push_back("tsp");
    v.push_back("tsp");
    v.push_back("gonit");
    v.push_back("tuhin");

    for(std::vector<std::string>::const_iterator i=v.begin();i!=v.end();i++)
    {
         std::cout << *i << ' ';
    }
    cout<<"===================="<<endl;
    v.erase(unique(v.begin(), v.end()), v.end());
    for(std::vector<std::string>::const_iterator i=v.begin();i!=v.end();i++)
    {
         std::cout << *i << ' ';
    }
}

删除副本时仍然给出重复值

输出: tuhin tsp tsp gonit tuhin ====================

tuhin tsp gonit tuhin

看到tuhin正在重复

1 个答案:

答案 0 :(得分:0)

来自std::unique的c ++参考:

  

删除范围内的连续重复项

     

从每个连续等效组中删除除第一个元素之外的所有元素     范围[第一个,最后一个]中的元素。

您需要做的是:

  

std :: sort(v.begin(),v.end());

     

v.erase(unique(v.begin(),v.end()),v.end());