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




              免責聲明!

              本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



               
              粵ICP備18138465號   © 2018-2025 CODEPRJ.COM