📌  相关文章
📜  使用C ++中的STL从排序的数组中删除重复项(1)

📅  最后修改于: 2023-12-03 15:06:52.197000             🧑  作者: Mango

使用C ++中的STL从排序的数组中删除重复项

在C ++中,可以使用STL算法和容器来轻松从排序的数组中删除重复项。这可以通过以下步骤完成:

  1. 包括头文件<algorithm><vector>

    #include <algorithm>
    #include <vector>
    
  2. 创建排序的数组

    int arr[] = { 1, 2, 2, 3, 4, 4, 5 };
    int n = sizeof(arr) / sizeof(arr[0]);
    
  3. 将数组存储在向量中以便更方便地进行操作

    std::vector<int> vec(arr, arr + n);
    
  4. 使用STL的unique()函数来删除重复项

    auto it = std::unique(vec.begin(), vec.end());
    vec.resize(std::distance(vec.begin(), it));
    

    这将返回一个指向新向量的末尾的迭代器,并将向量的大小更改为不包含重复项的数量。

  5. 打印新向量,以检查删除的重复项

    for (auto i : vec) {
        std::cout << i << " ";
    }
    

    输出:1 2 3 4 5

完整代码:

#include <algorithm>
#include <iostream>
#include <vector>

int main()
{
    int arr[] = { 1, 2, 2, 3, 4, 4, 5 };
    int n = sizeof(arr) / sizeof(arr[0]);

    std::vector<int> vec(arr, arr + n);
    
    auto it = std::unique(vec.begin(), vec.end());
    vec.resize(std::distance(vec.begin(), it));

    for (auto i : vec) {
        std::cout << i << " ";
    }
    std::cout << "\n";

    return 0;
}

以上就是使用C ++中的STL从排序的数组中删除重复项的方法。使用STL,我们可以轻松地完成这个任务,而不必编写复杂的代码。