C 常用集合演算法

2021-10-02 08:51:42 字數 2787 閱讀 8256

set_intersection //求兩個容器的交集

set_union //求兩個容器的並集

set_difference //求兩個容器的差集

(1)set _intersection

求交集,求交集的兩個集合必須有序,目標容器開闢空間需要從兩個容器中去最小值,set_intersection返回值即是交集中最後乙個元素的位置

函式原型:

set_intersection(iterator beg1,iterator end1,iterator beg2,iteraotr end2,iterator dest);

示例:

void

myprint

(int val)

void

test01()

vector<

int>vtarget;

//目標容器提前開闢空間,最特殊情況選擇最小容器大小值

vtarget.

resize

(min

(v1.

size()

,v2.

size()

));//獲取交集,返回目標容器迭代器的最後乙個位置

vector<

int>

::iterator itend =

set_intersection

(v1.

begin()

,v1.

end(

),v2.

begin()

,v2.

end(

),vtarget.

begin()

);//輸出交集容器的值

for_each

(vtarget.

begin()

,itend,myprint)

; cout<

}

(2)set_union

求並集,兩個容器集合必須是有序集合。最特殊情況下開闢記憶體空間為兩個容器集合相加,返回的也是最後乙個元素位置的迭代器

函式原型:

set_union(iterator beg1,iterator end1,iterator beg2,iterator end2,iterator dest);

示例:

vector<

int>vtarget;

//目標容器提前開闢空間,最特殊情況選擇最小容器大小值

vtarget.

resize

(max

(v1.

size()

,v2.

size()

));//獲取交集,返回目標容器迭代器的最後乙個位置

vector<

int>

::iterator itend =

set_union

(v1.

begin()

,v1.

end(

),v2.

begin()

,v2.

end(

),vtarget.

begin()

);

(3)set_difference

求差集函式原型:

set_difference(iterator beg1,iterator end1,iterator beg2,iterator end2,iterator dest);

//倆個集合必須有序,

示例:

void

test01()

vector<

int>vtarget;

//目標容器提前開闢空間,最特殊情況選擇兩個容器的容器中的最大值

vtarget.

resize

(max

(v1.

size()

,v2.

size()

));

cout<<

"v1和v2的差集為: "

;//獲取交集,返回目標容器迭代器的最後乙個位置

vector<

int>

::iterator itend =

set_difference

(v1.

begin()

, v1.

end(

),v2.

begin()

,v2.

end(

),vtarget.

begin()

);//輸出交集容器的值

for_each

(vtarget.

begin()

,itend,myprint)

; cout<

cout<<

"v2和v1的差集為:"

;//獲取交集,返回目標容器迭代器的最後乙個位置

itend =

set_difference

(v2.

begin()

, v2.

end(

),v1.

begin()

,v1.

end(

),vtarget.

begin()

);//輸出交集容器的值

for_each

(vtarget.

begin()

,itend,myprint)

; cout<

}

輸出樣式:

c 常用集合演算法

演算法簡介 set intersection 求兩個容器的交集 set union 求兩個容器的並集 set difference 求兩個容器的差集 set intersection 功能描述 求兩個容器的交集 函式原型 set intersection iterator beg1,iterator...

常用集合演算法

1.set intersection 求兩個容器的交集 include pch.h include include include using namespace std set intersection void test01 2.set union 並集 set union void test0...

92 C 常用集合演算法

set intersection演算法 求兩個set集合的交集 注意 兩個集合必須是有序序列 param beg1 容器1開始迭代器 param end1 容器1結束迭代器 param beg2 容器2開始迭代器 param end2 容器2結束迭代器 param dest 目標容器開始迭代器 re...