一般的に使用されるアルゴリズムのC ++ STLは、コレクション

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

おすすめ

転載: www.cnblogs.com/xiximayou/p/12114800.html