set_intersection:二つの容器の交差点
set_union:セットの2セットを検索し、
set_difference:二組のセットを差分
1.set_intersection
書式#include <iostreamの> 使用して 名前空間はstdを、 #include <ベクトル> の#include <アルゴリズム> // 常用集合算法set_intersection 空隙 myPrint(INT ヴァル) { COUT <<ヴァル<< " " 。 } ボイドTEST01() { ベクトル < INT > V1。 ベクトル < int型 > V2。 以下のために(INT iが= 0 ; I < 10 ; I ++ ) { v1.push_back(I)。 // 0 9〜 v2.push_back(I + 5。); // 。〜14 5 } ベクトル < int型 > VTARGET; // 事前にスペースを開くためにターゲットコンテナの必要性 @ 小さなコンテナを取るために小さなオープンスペースを含む大型コンテナ船の最も特殊なケースサイズでき vTarget.resize(分(v1.size()、v2.size())); // 取得交差点 ベクトル< int型 > :: =イテレータitEnd set_intersection(v1.begin()、v1.end()、 v2.begin()、v2.end()、vTarget.begin()); for_each(vTarget.begin()、itEnd、myPrint); COUT << ENDL; } int型のmain(){ TEST01(); システム("休止" ); 戻り 0 ; }
2.set_union
書式#include <iostreamの> 使用して 名前空間はstdを、 #include <ベクトル> の#include <アルゴリズム> // 常用集合算法set_union 空隙 myPrint(INT ヴァル) { COUT <<ヴァル<< " " 。 } ボイドTEST01() { ベクトル < INT > V1。 ベクトル < int型 > V2。 以下のために(INT iが= 0 ; I < 10 ; I ++ ) { v1.push_back(I)。 v2.push_back(I +5 ); } ベクトル < INT > VTARGET; // ターゲットコンテナのオープンスペース前方 @ ほとんど例外的な状況、二つの容器のない交差点が存在しない、二つの容器サイズが設定され、合計され vTarget.resize(v1.size()+ v2.size ()); ベクター < INT > :: =イテレータitEnd set_union(v1.begin()、v1.end()、v2.begin()、v2.end()、vTarget.begin()); for_each(VTARGET。 ;()、itEnd、myPrint)開始 COUT << ENDLを; } int型のmain(){ TEST01(); システム(" PAUSE " ); 戻り 0 ; }
3.set_difference
書式#include <iostreamの> 使用して 名前空間はstdを、 #include <ベクトル> の#include <アルゴリズム> ボイド myPrint(INT ヴァル) { COUT <<ヴァル<< " " 。 } // 常用集合算法set_difference ボイドTEST01() { ベクトル < INT > V1。 ベクトル < int型 > V2。 以下のために(INT iが= 0 ; I < 10 ; I ++ ) { v1.push_back(I)。 v2.push_back(私は + 5。); } // ターゲットコンテナを作成 ベクトル< INT > VTARGET; // ターゲットコンテナにオープンスペース // ほとんど例外的な状況、二つの容器が目標容器として開く大型することなく、二つの容器の交点を取りますスペース vTarget.resize(MAX(v1.size()、v2.size())); COUT << " としてV1、V2の差集合:" << てendl; ベクトル < int型 > :: =イテレータitEnd set_difference(V1 ()、v1.end()、v2.begin()、v2.end()、vTarget.begin()).begin; for_each(vTarget.begin()、itEnd、myPrint); COUT << ENDL、 COUT < < "v2の和V1的差集为:" << ENDL; itEnd = set_difference(v2.begin()、v2.end()、v1.begin()、v1.end()、vTarget.begin()); for_each( vTarget.begin()、itEnd、myPrint); COUT << ENDL; } int型のmain(){ TEST01(); システム(" 一時停止" ); 戻り 0 ; }