1. 程式人生 > >C++ STL Set 集合

C++ STL Set 集合

class div 模板 enc 第一個元素 union inline std left

前言

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);



              C++ STL Set 集合