常用集合算法

簡介

set_intersection //求兩個(gè)容器的交集
set_union //求兩個(gè)容器的并集
set_difference // 求兩個(gè)容器的差集

set_interection

函數(shù)原型
set_intersection(iterator begin1,iterator end1,iterator begin2,iterator begin2, iterator dest);
begin1、end12认臊、begin2圃庭、end2、分別表示兩個(gè)容器的其實(shí)迭代器和終止迭代器
dest 目標(biāo)容器的起始迭代器
返回目標(biāo)容器的結(jié)束迭代器

void print(int val)
{
    cout << val << " ";
}

void test01()
{
    vector<int> v1;
    vector<int> v2;
    for (int i = 0; i < 10;i++)
    {
        v1.push_back(i + 1);
        v2.push_back(i + 5);
    }
    vector<int> vTarget;
    vTarget.resize(min(v1.size(), v2.size()));   //極端情況失晴,v1,v2有包含關(guān)系
    vector<int>::iterator itEnd =  set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(), vTarget.begin());
    for_each(vTarget.begin(),itEnd, print); // 5 6 7 8 9 10 
}

set_union

簡介
set_union(iterator begin1,iterator end1,iterator begin2,iterator end2,iterator dest);
求兩個(gè)集合的并集

void print(int val)
{
    cout << val << " ";
}

void test01()
{
    vector<int> v1;
    vector<int> v2;
    for (int i = 0; i < 10;i++)
    {
        v1.push_back(i + 1);
        v2.push_back(i + 5);
    }
    vector<int> vTarget;
    vTarget.resize(v1.size() + v2.size());   //極端情況冤议,v1,v2中沒有相同元素
    vector<int>::iterator itEnd =  set_union(v1.begin(), v1.end(), v2.begin(), v2.end(), vTarget.begin());
    for_each(vTarget.begin(),itEnd, print); // 1 2 3 4 5 6 7 8 9 10 11 12 13 14 
}

set_difference

函數(shù)原型
set_diffenence(iterator begin1,iterator end1,iterator begin2,iterator end2 iterator targe);
求兩個(gè)容器的差集
注意:第一個(gè)容器與第二個(gè)容器的差集,和第二個(gè)容器與第一個(gè)容器的差集是不一樣的

void print(int val)
{
    cout << val << " ";
}

void test01()
{
    vector<int> v1;
    vector<int> v2;
    for (int i = 0; i < 10; i++)
    {
        v1.push_back(i + 1);
        v2.push_back(i + 5);
    }
    vector<int> vTarget;
    vTarget.resize(max(v1.size(), v2.size())); //極端情況师坎,v1,v2中沒有相同元素

    cout << "v1與v2的差集:" << endl;
    vector<int>::iterator itEnd = set_difference(v1.begin(), v1.end(), v2.begin(), v2.end(), vTarget.begin());
    for_each(vTarget.begin(), itEnd, print); // 1 2 3 4
    cout << endl;
    cout << "v2和v1的差集:" << endl;
    itEnd = set_difference(v2.begin(), v2.end(), v1.begin(), v1.end(), vTarget.begin());
    for_each(vTarget.begin(), itEnd, print); //11 12 13 14
}

需要注意的是恕酸,在執(zhí)行集合算法的時(shí)候,兩個(gè)容器必須都是有序的胯陋。還有蕊温,這個(gè)算法會(huì)返回一個(gè)迭代器袱箱,需要將這個(gè)迭代器看做結(jié)束迭代器。因?yàn)閞esize后的結(jié)果往往比求交集后的容器要大义矛。如果將目標(biāo)容器的結(jié)束迭代器放到遍歷算法里面发笔,末尾會(huì)輸出一串0捡絮。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末奋隶,一起剝皮案震驚了整個(gè)濱河市灸促,隨后出現(xiàn)的幾起案子袖迎,更是在濱河造成了極大的恐慌,老刑警劉巖晋被,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件潜秋,死亡現(xiàn)場離奇詭異恨溜,居然都是意外死亡垃杖,警方通過查閱死者的電腦和手機(jī)男杈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來调俘,“玉大人伶棒,你說我怎么就攤上這事〔士猓” “怎么了肤无?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長骇钦。 經(jīng)常有香客問我宛渐,道長,這世上最難降的妖魔是什么司忱? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任皇忿,我火速辦了婚禮畴蹭,結(jié)果婚禮上坦仍,老公的妹妹穿的比我還像新娘。我一直安慰自己叨襟,他們只是感情好繁扎,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著糊闽,像睡著了一般梳玫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上右犹,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天提澎,我揣著相機(jī)與錄音,去河邊找鬼念链。 笑死盼忌,一個(gè)胖子當(dāng)著我的面吹牛积糯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播谦纱,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼看成,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了跨嘉?” 一聲冷哼從身側(cè)響起川慌,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎祠乃,沒想到半個(gè)月后梦重,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡跳纳,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年忍饰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寺庄。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡艾蓝,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出斗塘,到底是詐尸還是另有隱情赢织,我是刑警寧澤,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布馍盟,位于F島的核電站于置,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏贞岭。R本人自食惡果不足惜八毯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瞄桨。 院中可真熱鬧话速,春花似錦、人聲如沸芯侥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽柱查。三九已至廓俭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間唉工,已是汗流浹背研乒。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留淋硝,地道東北人雹熬。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓错维,卻偏偏與公主長得像,于是被迫代替她去往敵國和親橄唬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子赋焕,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • /* set_intersection算法 求兩個(gè)set集合的交集 注意:兩個(gè)集合必須是有序序列 @param b...
    飯飯H閱讀 334評(píng)論 0 0
  • 本文章是本人黑馬程序員 C++| 匠心之作 從0到1入門學(xué)編程的學(xué)習(xí)筆記 前置文章: C++基礎(chǔ)入門 黑馬程序員 ...
    李思南Lance閱讀 405評(píng)論 0 0
  • 簡介 sort //對(duì)容器內(nèi)容進(jìn)行排序random_shuffle //洗牌,指定范圍內(nèi)的元素隨機(jī)調(diào)整次序m...
    殷超鋒閱讀 140評(píng)論 0 1
  • SLT的算法主要放在三個(gè)頭文件里面: 仰楚、<functional>和<numeric> 是所有STL頭文件里面最大的...
    殷超鋒閱讀 251評(píng)論 0 0
  • 表情是什么隆判,我認(rèn)為表情就是表現(xiàn)出來的情緒。表情可以傳達(dá)很多信息僧界。高興了當(dāng)然就笑了侨嘀,難過就哭了。兩者是相互影響密不可...
    Persistenc_6aea閱讀 124,427評(píng)論 2 7