我有以下程序
#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正在重复
答案 0 :(得分:0)
来自std::unique
的c ++参考:
删除范围内的连续重复项
从每个连续等效组中删除除第一个元素之外的所有元素 范围[第一个,最后一个]中的元素。
您需要做的是:
std :: sort(v.begin(),v.end());
v.erase(unique(v.begin(),v.end()),v.end());