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

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

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

在C++中,可以使用STL(标准模板库)来处理数组中的重复项。通过STL中的set容器,我们可以方便地找到并删除重复项。

什么是STL?

STL是C++中的一个重要组成部分,它是一组开源的标准库,包含了丰富的数据结构和算法,使得开发人员可以更快捷地编写高效的程序。

STL库包含了许多常用的容器,例如vector、list、map、set等。这些容器会自动处理内存分配问题,并提供了丰富的数据处理操作,使得开发人员可以在高效和易用之间找到平衡点。

如何使用STL从未排序的数组中删除重复项?

首先,需要包含STL库:

#include <set>

接下来,可以定义一个int型数组,并使用set容器来存储数组中的元素:

int arr[] = {5,2,8,1,9,3,6,7,4,2,8,3,7};
std::set<int> s(arr, arr + sizeof(arr) / sizeof(int));

以上代码中,首先定义了一个未排序的数组arr,包含了13个整数。然后,使用set容器s来存储arr中的元素。注意,这里使用了set的另一个构造函数,该函数使用了指针作为参数,从而使得set容器可以从一个C数组中构造。

现在,可以打印输出set容器中存储的元素:

for (auto iter = s.begin(); iter != s.end(); iter++) {
    std::cout << *iter << " ";
}

以上代码使用了STL中的迭代器,遍历了set容器中的所有元素,并将它们输出到标准输出流(即屏幕上)。

运行以上代码,将得到如下的输出:

1 2 3 4 5 6 7 8 9

以上代码已经成功从未排序的数组中删除了重复项,并将所有元素按升序排序。

完整代码
#include <iostream>
#include <set>

int main()
{
    int arr[] = {5,2,8,1,9,3,6,7,4,2,8,3,7};
    std::set<int> s(arr, arr + sizeof(arr) / sizeof(int));
    
    for (auto iter = s.begin(); iter != s.end(); iter++) {
        std::cout << *iter << " ";
    }
    
    return 0;
}
总结

通过STL的set容器,可以方便地从未排序的数组中删除重复项,并将所有元素按升序排序。这使得开发人员可以更快捷地处理数组中的数据,提高程序的效率和可读性。