C++中set是基于红黑树的有序唯一容器,支持高效插入、删除和查找操作。它自动排序且不允许重复元素,常用操作包括insert、erase、find等,默认升序排列,可通过greater或自定义比较器实现降序。适用于去重排序、频繁查询及维护动态有序集合场景。

在C++中,set 是一个非常实用的关联式容器,属于标准模板库(STL)的一部分。它用于存储唯一且自动排序的元素,底层通常由红黑树实现,保证了高效的插入、删除和查找操作。
set 的主要特点是:
使用 set 需要包含头文件:
#include <set>
立即学习“C++免费学习笔记(深入)”;
定义 set 的常见方式:
std::set<int> s; // 存储整数的set
std::set<std::string> names; // 存储字符串的set
以下是 set 容器提供的常用成员函数:
示例代码:
std::set<int> s;
s.insert(10);
s.insert(5);
s.insert(15);
s.insert(5); // 重复,不插入
for (const auto& x : s) {
std::cout << x << " "; // 输出:5 10 15
}
默认情况下,set 按照 less<T> 排序(升序)。可以通过提供比较函数来自定义顺序。
例如,实现降序排列:
std::set<int, std::greater<int>> s_desc;
s_desc.insert(10);
s_desc.insert(5);
s_desc.insert(15);
for (const auto& x : s_desc) {
std::cout << x << " "; // 输出:15 10 5
}
也可以使用自定义结构体或类,需重载比较运算符或提供仿函数。
set 可以存储 pair 类型,常用于处理二维唯一数据:
std::set<std::pair<int, int>> points;
points.insert({1, 2});
points.insert({3, 4});
pair 的比较按字典序进行,先比较 first,再比较 second。
set 特别适合以下场景:
对于不需要排序的去重需求,可以考虑使用 unordered_set,其基于哈希表,平均查找速度更快。
基本上就这些。掌握 set 的用法能显著提升编码效率,尤其在算法题和实际项目中处理有序唯一数据时非常方便。
以上就是c++++中set的用法_C++有序集合容器set详解的详细内容,更多请关注php中文网其它相关文章!
c++怎么学习?c++怎么入门?c++在哪学?c++怎么学才快?不用担心,这里为大家提供了c++速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号