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

    输出结果:

  • 相关阅读:
    JavaScript对原始数据类型的拆装箱操作
    Javascript继承(原始写法,非es6 class)
    动态作用域与词法作用域
    自行车的保养
    探索JS引擎工作原理 (转)
    C语言提高 (7) 第七天 回调函数 预处理函数DEBUG 动态链接库
    C语言提高 (6) 第六天 文件(续) 链表的操作
    C语言提高 (5) 第五天 结构体,结构体对齐 文件
    C语言提高 (4) 第四天 数组与数组作为参数时的数组指针
    C语言提高 (3) 第三天 二级指针的三种模型 栈上指针数组、栈上二维数组、堆上开辟空间
  • 原文地址:https://www.cnblogs.com/fuqia/p/9249656.html
Copyright © 2011-2022 走看看