legongju.com
我们一直在努力
2025-01-09 00:53 | 星期四

C++ set函数在算法设计中的应用技巧

在C++中,set是一个关联容器,它包含一组唯一的元素,并按照特定的排序规则进行存储。set在算法设计中的应用主要体现在以下几个方面:

  1. 去重:由于set中的元素都是唯一的,因此可以使用set来实现去重操作。将一个容器中的元素插入到set中,然后再从set中取出元素,这样就可以得到一个去重后的序列。
#include
#include
#include 
using namespace std;

int main() {
    vector nums = {1, 2, 3, 4, 4, 5, 6, 6, 7};
    set s(nums.begin(), nums.end());
    for (int num : s) {
        cout<< num << " ";
    }
    return 0;
}
  1. 查找:set提供了高效的查找操作,可以在O(log n)的时间复杂度内完成查找。如果需要在一个有序的序列中查找某个元素,可以使用set来实现。
#include
#include 
using namespace std;

int main() {
    set s = {1, 2, 3, 4, 5, 6, 7};
    int target = 4;
    if (s.find(target) != s.end()) {
        cout << "Found "<< target<< endl;
    } else {
        cout << "Not found"<< endl;
    }
    return 0;
}
  1. 区间查询:set还支持区间查询,可以在O(log n)的时间复杂度内找到某个区间内的所有元素。例如,可以使用lower_boundupper_bound函数来查找一个区间内的所有元素。
#include
#include 
using namespace std;

int main() {
    set s = {1, 2, 3, 4, 5, 6, 7};
    int lower = 3, upper = 6;
    auto it_low = s.lower_bound(lower);
    auto it_up = s.upper_bound(upper);
    for (auto it = it_low; it != it_up; ++it) {
        cout << *it << " ";
    }
    return 0;
}
  1. 最大/最小值:set中的第一个元素是最小值,最后一个元素是最大值。可以通过*s.begin()*s.rbegin()来获取最小值和最大值。
#include
#include 
using namespace std;

int main() {
    set s = {1, 2, 3, 4, 5, 6, 7};
    cout << "Min: " << *s.begin()<< endl;
    cout << "Max: " << *s.rbegin()<< endl;
    return 0;
}
  1. 排序:set会自动对其中的元素进行排序。如果需要对一个序列进行排序,可以将其插入到set中,然后再从set中取出元素,这样就可以得到一个有序的序列。
#include
#include
#include 
using namespace std;

int main() {
    vector nums = {7, 3, 1, 6, 4, 2, 5};
    set s(nums.begin(), nums.end());
    for (int num : s) {
        cout<< num << " ";
    }
    return 0;
}

总之,set在算法设计中的应用非常广泛,可以帮助我们实现去重、查找、区间查询、最大/最小值查询和排序等功能。

未经允许不得转载 » 本文链接:https://www.legongju.com/article/93785.html

相关推荐

  • c++ main函数与程序执行流程

    c++ main函数与程序执行流程

    C++ 程序的执行从 main 函数开始。当操作系统启动一个 C++ 程序时,它会调用程序中的 main 函数。main 函数是程序的入口点,所有的执行流程都从这里开始。
    ...

  • 如何编写高效的c++ main函数

    如何编写高效的c++ main函数

    编写高效的C++ main函数需要考虑以下几点: 遵循良好的编程实践:使用有意义的变量名,添加注释,避免全局变量,尽量减少代码重复等。 优化输入输出操作:尽量减...

  • c++中main函数的返回值类型

    c++中main函数的返回值类型

    在 C++ 中,main 函数的标准返回值类型是 int
    int main() { // Your code here return 0;
    } 当程序成功执行并结束时,通常将 0 作为返回值。如果程序遇...

  • main函数在c++程序中的位置

    main函数在c++程序中的位置

    在C++程序中,main()函数是程序的入口点
    #include // 1. 函数声明(可选)
    void someFunction(); // 2. 全局变量和常量声明(可选)
    int globalV...

  • 如何利用C++ set函数实现数据去重

    如何利用C++ set函数实现数据去重

    在 C++ 中,set 是一种关联容器,它包含一组唯一的元素。要使用 set 函数实现数据去重,你可以将需要去重的数据插入到 set 容器中,然后遍历 set 容器以获取去重...

  • C++ set函数对程序性能的影响有哪些

    C++ set函数对程序性能的影响有哪些

    在C++中,set 是一个关联容器,它包含一组唯一的元素。set 通常使用红黑树实现,这是一种自平衡二叉搜索树。set 函数对程序性能的影响主要取决于以下几点: 插入...

  • 在C++中如何自定义set函数的比较规则

    在C++中如何自定义set函数的比较规则

    在 C++ 中,要自定义 set 容器的比较规则,需要创建一个自定义的比较类或者结构体,并重载 operator() 函数。然后将这个自定义比较类作为模板参数传递给 std::se...

  • C++ set函数在不同容器中的表现差异

    C++ set函数在不同容器中的表现差异

    C++ 中的 set 是一个关联容器,它包含一组唯一的元素,并按照特定的排序规则进行存储 std::set:这是一个有序集合,其中的元素按照升序排列。std::set 不支持下标...