c STL之常用集合演算法

2022-06-11 17:54:10 字數 2027 閱讀 7945

set_intersection:求兩個容器的交集

set_union:求兩個集合的並集

set_difference:求兩個集合的差集

1.set_intersection

#includeusing

namespace

std;

#include

#include

//常用集合演算法 set_intersection

void myprint(int

val)

void

test01()

vector

vtarget;

//目標容器需要提前開闢空間

//最特殊情況 大容器包含小容器 開闢空間 取小容器的size即可

vtarget.resize(min(v1.size(), v2.size()));

//獲取交集

vector::iterator itend =set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(), vtarget.begin());

for_each(vtarget.begin(), itend, myprint);

cout

<}int

main()

2.set_union

#includeusing

namespace

std;

#include

#include

//常用集合演算法 set_union

void myprint(int

val)

void

test01()

vector

vtarget;

//目標容器提前開闢空間

//最特殊情況 兩個容器沒有交集,並集就是兩個容器size相加

vtarget.resize(v1.size() +v2.size());

vector

::iterator itend =set_union(v1.begin(), v1.end(), v2.begin(), v2.end(), vtarget.begin());

for_each(vtarget.begin(), itend, myprint);

cout

<}int

main()

3.set_difference

#includeusing

namespace

std;

#include

#include

void myprint(int

val)

//常用集合演算法 set_difference

void

test01()

//建立目標容器

vectorvtarget;

//給目標容器開闢空間

//最特殊情況 兩個容器沒有交集 取兩個容器中大的size作為目標容器開闢空間

vtarget.resize( max(v1.size(),v2.size()) );

cout

<< "

v1和v2的差集為:

"

::iterator itend =set_difference(v1.begin(), v1.end(), v2.begin(), v2.end(), vtarget.begin());

for_each(vtarget.begin(), itend, myprint);

cout

<< "

v2和v1的差集為:

"

for_each(vtarget.begin(), itend, myprint);

cout

<}int

main()

常用集合演算法

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

C 常用集合演算法

set intersection 求兩個容器的交集 set union 求兩個容器的並集 set difference 求兩個容器的差集 1 set intersection 求交集,求交集的兩個集合必須有序,目標容器開闢空間需要從兩個容器中去最小值,set intersection返回值即是交集中...

c 常用集合演算法

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