我正在尝试创建一个程序,只保留向量中的唯一元素
例如:
vector<string> i = "one", "one", "two".
输出将是:
vector<string> i = "one", "two"
****这是作为函数的答案的实现。当我使用样本向量运行时,我得到错误向量迭代器不兼容。
void simplifyVector(vector<string> i){
/*vector<string>*/;
sort(i.begin(), i.end());
auto iter = unique(i.begin(), i.end());
while (iter != i.end())
{
i.erase(iter);
}
for (const auto &s : i)
{
cout << s << " ";
}
cout << endl;
}
答案 0 :(得分:0)
使用sort和unique。使用sort来但是彼此相邻的所有重复值除了unique之外,将所有相互相邻的值放在最后并返回指向第一个重复元素的迭代器。然后我们使用while循环来删除这些元素。请记住,通用算法永远不会删除容器中的元素。
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
int main()
{
std::vector<std::string> i = {"one", "one", "two"};
std::sort(i.begin(), i.end());
auto iter = std::unique(i.begin(), i.end());
erase(iter, i.end());
for (const auto &s : i)
{
std::cout << s << " ";
}
std::cout << std::endl;
return 0;
}