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

C++STL中集合set的底层实现和常用操作

作者:野牛程序员:2023-08-08 18:55:03 C++阅读 2825

在 C++ STL 中,std::set 是一个有序的关联容器,底层实现通常是基于红黑树(Red-Black Tree)的数据结构。红黑树是一种自平衡的二叉搜索树,具有较好的平衡性能,保证了插入、删除和查找操作的平均时间复杂度为 O(log n),其中 n 是集合中的元素数量。

下面是一些常用的 std::set 操作:

  1. 插入元素: 使用 insert() 函数将元素插入到集合中。插入操作会保持集合的有序性。

    std::set<int> mySet;
    mySet.insert(5);
    mySet.insert(2);
    mySet.insert(8);
  2. 删除元素: 使用 erase() 函数来删除集合中的元素。可以提供要删除的元素值或迭代器作为参数。

    mySet.erase(5);  // 删除元素值为 5 的元素
    auto it = mySet.find(2);
    if (it != mySet.end()) {
        mySet.erase(it);  // 删除迭代器指向的元素
    }
  3. 查找元素: 使用 find() 函数来查找集合中的元素。如果找到了,返回一个指向该元素的迭代器,否则返回 end()

    auto found = mySet.find(8);
    if (found != mySet.end()) {
        std::cout << "Element found: " << *found << std::endl;
    }
  4. 遍历元素: 使用迭代器可以遍历集合中的元素。

    for (const int& element : mySet) {
        std::cout << element << " ";
    }
    std::cout << std::endl;
  5. 集合大小: 使用 size() 函数获取集合中的元素数量。

    std::cout << "Set size: " << mySet.size() << std::endl;

总之,std::set 提供了高效的有序集合实现,支持插入、删除、查找和遍历等常见操作。它适用于需要保持元素有序性和去重的场景。注意,std::set 的元素必须是可比较的,因此需要支持 < 操作符。


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

最新推荐

热门点击