欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > C++STL中set的用法及细节

C++STL中set的用法及细节

2025/5/12 19:45:14 来源:https://blog.csdn.net/2301_80215285/article/details/144932445  浏览:    关键词:C++STL中set的用法及细节

C++ STL中的set是一个基于红黑树实现的关联容器,它能够存储有序且唯一的元素。以下是set的一些常用函数及其使用方式:

  1. 插入元素insert(value)用于向set中插入元素,如果元素已存在,则不会插入重复元素。

    std::set<int> mySet;
    mySet.insert(10);
    
  2. 查找元素find(value)用于查找元素,如果找到元素,则返回指向该元素的迭代器;否则返回end()迭代器。

    if (mySet.find(10) != mySet.end()) {std::cout << "Element found." << std::endl;
    }
    
  3. 删除元素erase(iter)erase(value)用于删除元素。可以通过迭代器或键值来删除元素。

    mySet.erase(10); // 删除值为10的元素
    auto it = mySet.find(20);
    if (it != mySet.end()) {mySet.erase(it); // 删除迭代器指向的元素
    }
    
  4. 清空容器clear()用于清空set中的所有元素。

    mySet.clear();
    
  5. 检查容器是否为空empty()用于检查set是否为空。

    if (mySet.empty()) {std::cout << "The set is empty." << std::endl;
    }
    
  6. 获取容器大小size()返回set中元素的数量。

    std::cout << "The set contains " << mySet.size() << " elements." << std::endl;
    
  7. 获取迭代器begin()end()分别返回指向第一个元素和最后一个元素之后的迭代器。

    for (auto it = mySet.begin(); it != mySet.end(); ++it) {std::cout << *it << " ";
    }
    
  8. 自定义比较函数set可以指定自定义的比较函数,如std::greater<int>()来实现降序排列。

    std::set<int, std::greater<int>> mySet;
    

在竞赛过程中,使用set的细节包括:

  • 性能set的插入、删除和查找操作的时间复杂度为O(log n),其中n是元素数量。
  • 内存使用set可能需要比数组或向量更多的内存,因为它需要存储额外的信息来维护树的平衡。
  • 迭代器失效:在对set进行插入或删除操作后,之前的所有迭代器可能会失效,需要重新获取迭代器。
  • 元素唯一性set中的元素必须是唯一的,尝试插入重复元素将不会成功。

以上是set的一些基本操作和在竞赛中使用时的注意事项。在实际编程中,应根据具体需求选择合适的容器和操作。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词