将向量简化为只有唯一元素
Simplify a vector to have only unique elements
我正在尝试创建一个程序,只保留矢量中的唯一元素
例如:
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;
}
使用排序和唯一性。使用sort-to-but所有相邻的重复值而不是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;
}
相关文章:
- 如何在 c++ 中迭代数组中的唯一元素
- tbb:current_unordered_map()-向量中每个唯一元素的ID
- 如何在c++中找到数组的最小唯一元素
- 类实例的地址是否等于类中唯一元素的地址
- 识别结构C++中的唯一元素
- 在矢量中使用特定条件检查唯一元素
- 在迭代过程中删除向量的唯一元素?
- 在唯一元素上进行迭代器,而无需构造容器
- 实例化 std::vector 的唯一元素,而无需复制构造函数
- 从数组中删除唯一元素的最有效方法
- 在我试图创建一个载体中包含C 中的唯一元素的矢量时,发现不起作用
- 将整数分配给 std::vector 中排序的唯一元素
- 使用线程打印数组中的唯一元素
- 唯一元素堆栈的容器
- 元素在给定范围内的子矩阵中唯一元素的数目
- 创建包含唯一元素的优先级队列
- 自定义比较器,将唯一元素插入到c++中的集合中
- 这是在包含非唯一元素的未排序数组中选择第k个最大数的最快算法
- C++数据结构,用于存储两组唯一元素之间的多个关系
- 具有唯一元素和按索引访问的容器