• STL set


    感谢http://blog.csdn.net/ac_hexin/article/details/52042562

    set

    如果需要集合中的元素允许重复那么可以使用multiset

    1.创建set集合对象

    创建set对象时,需要指定元素的类型,这一点和其他容器一样。

    1 set<int> s;

    2.元素的插入与中序遍历

    采用inset()方法把元素插入到集合中,插入规则在默认的比较规则下,是按元素值从小到大插入,如果自己指定了比较规则函数,则按自定义比较规则函数插入。使用前向迭代器对集合中序遍历,结果正好是元素排序后的结果。

     1 s.insert(5); //第一次插入5,可以插入
     2 s.insert(1);
     3 s.insert(6);
     4 s.insert(3);
     5 s.insert(5); //第二次插入5,重复元素,不会插入
     6 set<int>::iterator it; //定义前向迭代器
     7 //中序遍历集合中的所有元素
     8 for(it = s.begin(); it != s.end(); it++)
     9 {
    10     cout << *it << " ";
    11 }

    3.元素的方向遍历

    使用反向迭代器reverse_iterator可以反向遍历集合,输出的结果正好是集合元素的反向排序结果。

    它需要用到rbegin()和rend()两个方法,它们分别给出了反向遍历的开始位置和结束位置。

    1 set<int>::reverse_iterator rit; //定义反向迭代器
    2 //反向遍历集合中的所有元素
    3 for(rit = s.rbegin(); rit != s.rend(); rit++)
    4 {
    5     cout << *rit << " ";
    6 }

    4.元素的检索

    使用find()方法对集合进行检索,如果找到查找的的键值,则返回该键值的迭代器位置;否则,返回集合最后一个元素后面的一个位置,即end()。

    1 set<int>::iterator it;
    2 it = s.find(6); //查找键值为6的元素
    3 if(it != s.end())
    4     cout << *it << endl;
    5 else
    6     cout << "not find it" << endl;

    5.元素删除

    可以直接删键值,也可以删除一个迭代器

    1 s.erase(6); //删除键值为6的元素
    2 it=s.begin();
    3 it=s.erase(it); //返回新的第一个元素

    还可以删除一个区间的数:

    1  for (int i=1; i<10; i++) myset.insert(i*10); // 10 20 30 40 50 60 70 80 90
    2   itlow=myset.lower_bound (30);                           ^  
    3   itup=myset.upper_bound (60);                                                ^
    4   myset.erase(itlow,itup);                     // 10 20 70 80 90

    Set常用函数:

     1 begin()--返回指向第一个元素的迭代器
     2 clear()--清除所有元素
     3 count()--返回某个值元素的个数
     4 empty()--如果集合为空,返回true
     5 end()--返回指向最后一个元素的迭代器
     6 erase()--删除集合中的元素
     7 find()--返回一个指向被查找到元素的迭代器
     8 insert()--在集合中插入元素
     9 lower_bound()--返回指向大于(或等于)某值的第一个元素的迭代器
    10 rbegin()--返回指向集合中最后一个元素的反向迭代器
    11 rend()--返回指向集合中第一个元素的反向迭代器
    12 upper_bound()--返回大于某个值元素的迭代器
  • 相关阅读:
    单独设置css的class属性
    理解闭包的使用方法
    npm常用命令和总结
    前端调试之服务器
    gulp 报错的处理——个人经验
    工作经验备忘
    c++:虚函数和纯虚函数(转载)
    snmp学习、配置
    sigar学习
    linux安装VSCode
  • 原文地址:https://www.cnblogs.com/Y-E-T-I/p/7763887.html
Copyright © 2020-2023  润新知