当前位置:   article > 正文

C++示例:学习C++标准库std::set集合容器的使用_std::set 删除

std::set 删除

01 std::set介绍

std::set是C++ STL标准模板库中的一个集合容器,它存储的元素是唯一的,也就是说,每个元素在集合中只出现一次。std::set提供了基于红黑树实现的快速查找操作,平均时间复杂度为 O(log n)。

std::set的元素默认按升序排列。

下面通过示例代码,详细讲解std::set的功能使用。

02 初始定义

  1. #include <set>
  2. // 定义一个空的容器对象
  3. std::set<int> mySetData;
  4. // 通过初始值定义集合容器对象
  5. std::set<int> mySetData{ 1324 };

03 添加元素

  1. #include <set>
  2. // 定义一个空的容器对象
  3. std::set<int> mySetData;
  4. // 添加元素
  5. mySetData.insert(1);
  6. mySetData.insert(3);
  7. mySetData.insert(2);
  8. mySetData.insert(4);

04 查找元素

  1. #include <set>
  2. // 通过初始值定义容器对象
  3. std::set<int> mySetData{ 1324 };
  4. // 查找元素
  5. auto iter = mySetData.find(1);
  6. if (mySetData.end() != iter)
  7. {
  8.     int v = *iter;
  9.     std::cout << "find v = " << v << std::endl;
  10. }

05 删除元素

  • 通过值删除元素:

  1. #include <set>
  2. // 通过初始值定义容器对象
  3. std::set<int> mySetData{ 1324 };
  4. // 通过值删除元素
  5. mySetData.erase(1);
  • 通过迭代器删除元素:

  1. #include <set>
  2. // 通过初始值定义容器对象
  3. std::set<int> mySetData{ 1324 };
  4. // 查找元素
  5. auto iter = mySetData.find(1);
  6. if (mySetData.end() != iter)
  7. {
  8.     // 通过迭代器删除元素
  9.     mySetData.erase(iter);
  10. }

06 遍历元素

  1. #include <set>
  2. // 通过初始值定义容器对象
  3. std::set<int> mySetData{ 1324 };
  4. // 遍历元素
  5. for (int v : mySetData)
  6. {
  7.     // 会输出 1 2 3 4
  8.     std::cout << "list1 v = " << v << std::endl;
  9. }

07 排序

std::set集合容器的元素默认按升序排列,这里学习利用自定义比较函数实现降序功能。

  1. #include <set>
  2. // 自定义比较函数
  3. bool myCompare(int a, int b)
  4. {
  5.     return a > b;
  6. }
  7. // 指定自定义比较函数
  8. std::set<int, decltype(myCompare)*> mySetData(myCompare);
  9. // 添加元素
  10. mySetData.insert(1);
  11. mySetData.insert(3);
  12. mySetData.insert(2);
  13. mySetData.insert(4);
  14. // 遍历元素
  15. for (int v : mySetData)
  16. {
  17.     // 会输出 4 3 2 1
  18.     std::cout << "v = " << v << std::endl;
  19. }

08 附录:完整源码

关注公众号下载本示例完整工程源码(09_std_set_example.zip)。

-【End】-

#想了解更多精彩内容,关注下方公众号,还有示例源码、开发工具免费下载。

喜欢本文章,记得点赞、分享、关注哦~

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/382946
推荐阅读
相关标签
  

闽ICP备14008679号