01 std::set介绍
std::set是C++ STL标准模板库中的一个集合容器,它存储的元素是唯一的,也就是说,每个元素在集合中只出现一次。std::set提供了基于红黑树实现的快速查找操作,平均时间复杂度为 O(log n)。
std::set的元素默认按升序排列。
下面通过示例代码,详细讲解std::set的功能使用。
02 初始定义
#include <set>
// 定义一个空的容器对象
std::set<int> mySetData;
// 通过初始值定义集合容器对象
std::set<int> mySetData{ 1, 3, 2, 4 };
03 添加元素
#include <set>
// 定义一个空的容器对象
std::set<int> mySetData;
// 添加元素
mySetData.insert(1);
mySetData.insert(3);
mySetData.insert(2);
mySetData.insert(4);
04 查找元素
#include <set>
// 通过初始值定义容器对象
std::set<int> mySetData{ 1, 3, 2, 4 };
// 查找元素
auto iter = mySetData.find(1);
if (mySetData.end() != iter)
{
int v = *iter;
std::cout << "find v = " << v << std::endl;
}
05 删除元素
-
通过值删除元素:
#include <set>
// 通过初始值定义容器对象
std::set<int> mySetData{ 1, 3, 2, 4 };
// 通过值删除元素
mySetData.erase(1);
-
通过迭代器删除元素:
#include <set>
// 通过初始值定义容器对象
std::set<int> mySetData{ 1, 3, 2, 4 };
// 查找元素
auto iter = mySetData.find(1);
if (mySetData.end() != iter)
{
// 通过迭代器删除元素
mySetData.erase(iter);
}
06 遍历元素
#include <set>
// 通过初始值定义容器对象
std::set<int> mySetData{ 1, 3, 2, 4 };
// 遍历元素
for (int v : mySetData)
{
// 会输出 1 2 3 4
std::cout << "list1 v = " << v << std::endl;
}
07 排序
std::set集合容器的元素默认按升序排列,这里学习利用自定义比较函数实现降序功能。
#include <set>
// 自定义比较函数
bool myCompare(int a, int b)
{
return a > b;
}
// 指定自定义比较函数
std::set<int, decltype(myCompare)*> mySetData(myCompare);
// 添加元素
mySetData.insert(1);
mySetData.insert(3);
mySetData.insert(2);
mySetData.insert(4);
// 遍历元素
for (int v : mySetData)
{
// 会输出 4 3 2 1
std::cout << "v = " << v << std::endl;
}
08 附录:完整源码
关注公众号下载本示例完整工程源码(09_std_set_example.zip)。
-【End】-
#想了解更多精彩内容,关注下方公众号,还有示例源码、开发工具免费下载。
喜欢本文章,记得点赞、分享、关注哦~