赞
踩
std::set是C++ STL标准模板库中的一个集合容器,它存储的元素是唯一的,也就是说,每个元素在集合中只出现一次。std::set提供了基于红黑树实现的快速查找操作,平均时间复杂度为 O(log n)。
std::set的元素默认按升序排列。
下面通过示例代码,详细讲解std::set的功能使用。
- #include <set>
-
- // 定义一个空的容器对象
- std::set<int> mySetData;
-
- // 通过初始值定义集合容器对象
- std::set<int> mySetData{ 1, 3, 2, 4 };
-
- #include <set>
-
- // 定义一个空的容器对象
- std::set<int> mySetData;
-
- // 添加元素
- mySetData.insert(1);
- mySetData.insert(3);
- mySetData.insert(2);
- mySetData.insert(4);
-
- #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;
- }
通过值删除元素:
- #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);
- }
-
- #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;
- }
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;
- }
-
关注公众号下载本示例完整工程源码(09_std_set_example.zip)。
-【End】-
#想了解更多精彩内容,关注下方公众号,还有示例源码、开发工具免费下载。
喜欢本文章,记得点赞、分享、关注哦~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。