zoukankan      html  css  js  c++  java
  • C++标准模板库(STL)介绍:set的基本用法

    1、元素的方向遍历

    使用反向迭代器reverse_iterator可以反向遍历集合,输出集合元素的反向排序结果。它需要用到rbegin()和rend()两个方法,它们分别给出了反向遍历的开始位置和结束位置。

     1 #include<iostream>
     2 #include<set>
     3 using namespace std;
     4 
     5 int main(){
     6     set<int> st;
     7     st.insert(5); 
     8     st.insert(1);
     9     st.insert(6);
    10     st.insert(3);
    11     set<int>::reverse_iterator rit; //定义反向迭代器
    12     //反向遍历st中的所有元素
    13     for (rit = st.rbegin(); rit != st.rend(); rit++)
    14         cout << *rit << " ";
    15     cout << endl;
    16     return 0;
    17 }
    18 //运行结果:6 5 3 1
    View Code

     2、求解set的交、并、差、对称差的函数

    #include <algorithm>
    set_intersection(取集合交集)
    set_union(取集合并集)
    set_difference(取集合差集)
    set_symmetric_difference(取集合对称差集)

    这几个函数的前四个参数一样,只有第五个参数有多重版本。

    EX1:

    set_union(A.begin(),A.end(),B.begin(),B.end(),inserter( C1 , C1.begin() ) );

    前四个参数依次是第一的集合的头尾,第二个集合的头尾。第五个参数的意思是将集合A、B取合集后的结果存入集合C中。

    EX2:

    set_union(A.begin(),A.end(),B.begin(),B.end(),ostream_iterator<int>(cout," “));

    第五个参数的意思是将A、B取合集后的结果直接输出,(cout," ")双引号里面是输出你想用来间隔集合元素的符号或是空格。

     1 #include <iostream>     
     2 #include <algorithm>    
     3 #include <iterator>
     4 #include <vector>       
     5 #include <set>
     6 using namespace std;
     7 
     8 void print(set<int>& st) {
     9     set<int>::iterator it;
    10     for (it = st.begin(); it != st.end(); it++)
    11         cout << *it << " ";
    12     cout << endl;
    13 }
    14 int main() {
    15     set<int> st1, st2, st3;
    16     for (int i = 0; i < 6; i++) {
    17         st1.insert(i);
    18         st2.insert(i + 6);
    19     }
    20     st1.insert(6);
    21     cout << "st1:";
    22     print(st1);
    23     cout << "st2:";
    24     print(st2);
    25     set_union(st1.begin(), st1.end(), st2.begin(), st2.end(), inserter(st3, st3.begin()));
    26     cout << "st3:";
    27     print(st3);
    28     set_union(st1.begin(), st1.end(), st2.begin(), st2.end(), ostream_iterator<int>(cout, "*"));
    29     
    30     return 0;
    31 }
    View Code

    输出结果:

  • 相关阅读:
    Security headers quick reference Learn more about headers that can keep your site safe and quickly look up the most important details.
    Missing dollar riddle
    Where Did the Other Dollar Go, Jeff?
    proteus 与 keil 联调
    cisco router nat
    router dhcp and dns listen
    配置802.1x在交换机的端口验证设置
    ASAv931安装&初始化及ASDM管理
    S5700与Cisco ACS做802.1x认证
    playwright
  • 原文地址:https://www.cnblogs.com/fuqia/p/9249656.html
Copyright © 2011-2022 走看看