legongju.com
我们一直在努力
2024-12-25 09:42 | 星期三

c++ 中的 set 怎么用

C++ 中的 set 是一个关联容器,它包含一组唯一的对象。每个元素在插入时都会自动按键排序。set 通常使用红黑树实现,因此插入、删除和查找操作的时间复杂度都是 O(log n)。

下面是一个简单的 set 使用示例:

#include 
#include 

int main() {
    // 创建一个整数类型的 set
    std::set my_set;

    // 向 set 中插入元素
    my_set.insert(3);
    my_set.insert(1);
    my_set.insert(4);
    my_set.insert(1); // 重复元素,不会被插入

    // 遍历 set
    for (const auto& element : my_set) {
        std::cout << element << " ";
    }
    std::cout << std::endl;

    // 查找元素
    auto it = my_set.find(1);
    if (it != my_set.end()) {
        std::cout << "Found: " << *it << std::endl;
    } else {
        std::cout << "Not found" << std::endl;
    }

    // 删除元素
    my_set.erase(1);

    // 再次遍历 set
    std::cout << "After erasing 1:" << std::endl;
    for (const auto& element : my_set) {
        std::cout << element << " ";
    }
    std::cout << std::endl;

    return 0;
}

输出结果:

1 3 4
Found: 1
After erasing 1:
3 4

在这个示例中,我们创建了一个整数类型的 set,并向其中插入了一些元素。注意,重复的元素不会被插入。然后我们遍历了 set,查找了一个元素,并删除了它。最后再次遍历 set 以查看结果。

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

相关推荐

  • c#反编译能还原属性吗

    c#反编译能还原属性吗

    C# 反编译器可以将已编译的程序集(.dll 或 .exe 文件)转换回 C# 代码。在这个过程中,反编译器会尝试恢复源代码的结构和格式,包括类、方法、属性等。然而,反...

  • c# get set如何调用

    c# get set如何调用

    在C#中,get和set是属性(Property)的访问器。它们允许你封装对私有字段(Private Field)的访问,同时提供自定义的读取和设置逻辑。以下是如何在C#中使用get和...

  • c# get set如何设置

    c# get set如何设置

    在C#中,"get"和"set"关键字用于定义属性的访问器。属性提供了一种灵活的机制来读取、写入或计算私有字段的值。这里有一个简单的示例,展示了如何使用"get"和"se...

  • c# get set有哪些要点

    c# get set有哪些要点

    C#中的Get和Set方法主要用于封装类的属性,以实现对属性的读取和修改。在使用Get和Set方法时,需要注意以下几点: 遵循一定的命名规范:Get和Set方法的命名应以动...

  • c++ 编译指令有何作用

    c++ 编译指令有何作用

    C++编译指令(也称为编译器指令或预处理指令)在C++源代码中起到特殊的作用。它们是由预处理器处理的,而不是由C++编译器直接处理。预处理器在编译源代码之前对源...

  • c++ 编译指令怎么用呢

    c++ 编译指令怎么用呢

    C++编译指令是在编译过程中对源代码进行一些设置或控制。它们以#符号开头,通常位于源文件的顶部,用于定义宏、包含头文件、设置编译选项等。以下是一些常用的C+...

  • c++ 编译指令有哪些呢

    c++ 编译指令有哪些呢

    C++编译指令主要包括以下几类: 预处理指令: #include:用于引入头文件,使程序可以使用定义在头文件中的函数、变量或类。
    #define:用于定义宏,可以简化...

  • java 新建线程有何区别

    java 新建线程有何区别

    在Java中,新建线程主要有以下几种方式: 继承Thread类:
    创建一个类,继承自Thread类,并重写其run()方法。然后创建该类的实例,并调用start()方法来启动新...