C++ STL Set 集合

前言

set是STL中的一种关联容器。集合具有无序性,互异性等特点。熟练使用STL中的set模板类,可以比较简单的解决一些编程问题。

    • 关联容器:元素按照关键字来保存和访问,STL中的map,set就是关联容器

    • 顺序容器:元素按照在容器中的位置顺序保存和访问

    在使用set模板类前,请添加头文件 #include <set>

    基本操作

    • int size(); 返回集合中元素的个数

    • iterator insert(T ); 向集合中插入一个元素

    • iterator begin(); 返回指向当前集合中第一个元素的迭代器

    • iterator end(); 返回指向当前集合中最后个元素的迭代器

    求交集,并集,差集,对称差集

    要使用上述算法,请添加头文件 #include <algorithm>

    • 交集

    • template<class _InIt1, class _InIt2, class _OutIt>

      _OutIt set_intersection(_InIt1 _First1, _InIt1 _Last1,_InIt2 _First2, _InIt2 _Last2, _OutIt _Dest);

            形参含义

            _First1 , _Last1 集合a的头尾迭代器

            _First1 ,   _Last2 集合b的头尾迭代器

            _Dest  储存运算结果容器的头迭代器

            返回值

            返回储存结果容器的最后一个元素的下一个迭代器

      int first[] = { 5,10,15,20,25 };
          int second[] = { 50,40,30,20,10 };
          set<int> a(first, first + 5);
          set<int> b(second, second + 5);
          std::vector<int> v(10);// 0  0  0  0  0  0  0  0  0  0
          std::vector<int>::iterator it;
          it = set_intersection(a.begin(), a.end(), b.begin(), b.end(), v.begin());
          //10 20 0  0  0  0  0  0  0  0
          //it 指向第三个元素
          v.resize(it - v.begin());// 10 20
      • 并集

      • template<class _InIt1, class _InIt2, class _OutIt> inline

        _OutIt set_union(_InIt1 _First1,  _InIt1 _Last1, _InIt2 _First2,  _InIt2 _Last2,  _OutIt _Dest);

          • 差集

          • template<class _InIt1,class _InIt2,class _OutIt>

            _OutIt set_difference(_InIt1 _First1, _InIt1 _Last1,_InIt2 _First2, _InIt2 _Last2,_OutIt _Dest);

              • 对称差集

              • template<class _InIt1,class _InIt2,class _OutIt>

                _OutIt set_symmetric_difference(_InIt1 _First1, _InIt1 _Last1,_InIt2 _First2, _InIt2 _Last2,_OutIt _Dest);



              posted @ 2019-04-29 23:21  阳离子  阅读(1887)  评论(0编辑  收藏  举报