将向量简化为只有唯一元素

Simplify a vector to have only unique elements

本文关键字:唯一 元素 向量      更新时间:2023-10-16

我正在尝试创建一个程序,只保留矢量中的唯一元素

例如:

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;
}