当前位置:首页 C++ > 正文

vector删除相同元素

作者:野牛程序员:2023-07-07 05:49:21 C++阅读 3132

在 C++ 中,如果你想从一个向量(vector)中删除相同的元素,你可以按照以下步骤进行操作:

  1. 包含必要的头文件:

    #include <vector>#include <algorithm>
  2. 创建一个向量并填充它:

    std::vector<int> myVector = {1, 2, 3, 2, 4, 1, 5, 6, 3};
  3. 使用 std::sort 对向量进行排序:

    std::sort(myVector.begin(), myVector.end());
  4. 使用 std::uniqueerase 函数删除相同的元素:

    myVector.erase(std::unique(myVector.begin(), myVector.end()), myVector.end());

    这里的 std::unique 函数会将相邻的重复元素移到向量的末尾,然后返回指向第一个重复元素的迭代器。通过调用 erase 函数,我们可以删除这些重复元素。

完成以上步骤后,myVector 中将只包含不重复的元素。在上述示例中,myVector 将变为 {1, 2, 3, 4, 5, 6}

请注意,这些步骤假设你希望删除连续重复的元素。如果你希望删除不连续的重复元素,你可以使用其他算法,如使用哈希表或构建新的向量来实现。

如果你想删除不连续的重复元素,你可以使用额外的数据结构,如哈希表(std::unordered_set)来跟踪已经出现过的元素。以下是实现这个过程的示例代码:

#include <vector>
#include <unordered_set>

std::vector<int> removeDuplicates(const std::vector<int>& inputVector) {
    std::unordered_set<int> uniqueSet;
    std::vector<int> resultVector;

    for (int num : inputVector) {
        // 检查当前元素是否已经在哈希表中出现过
        if (uniqueSet.find(num) == uniqueSet.end()) {
            // 如果没有出现过,将其添加到结果向量和哈希表中
            resultVector.push_back(num);
            uniqueSet.insert(num);
        }
    }

    return resultVector;
}

在上述示例代码中,我们定义了一个名为 removeDuplicates 的函数,它接受一个输入向量 inputVector 并返回一个不包含重复元素的新向量 resultVector

函数内部使用了 std::unordered_set 来存储已经出现过的元素。对于输入向量中的每个元素,我们检查它是否已经在哈希表中出现过。如果没有出现过,我们将其添加到结果向量和哈希表中。

以下是使用示例:

int main() {
    std::vector<int> myVector = {1, 2, 3, 2, 4, 1, 5, 6, 3};
    std::vector<int> resultVector = removeDuplicates(myVector);

    // 输出结果向量中的元素
    for (int num : resultVector) {
        std::cout << num << " ";
    }

    return 0;
}

上述代码将输出:1 2 3 4 5 6,即不包含重复元素的结果向量。

野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击