c 學習筆記(30)

2021-10-06 12:32:08 字數 2486 閱讀 5326

常用集合演算法

演算法簡介:

set_intersection 求兩個容器的交集

set_union 求兩個容器的並集

set_difference 求兩個容器的差集

set_intersection

函式原型:

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

求兩個集合的交集

注意:兩個集合必須是有序序列

beg1容器1開始迭代器

end1容器1結束迭代器

beg2容器2開始迭代器

end2容器2結束迭代器

dest目標容器開始迭代器

#include

#include

void

test1()

vector<

int>target;

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

target.

size

(min

(v1.

size()

,v2.

size()

));//利用min取最小值,也屬於演算法

vector<

int>

::iterator it =

set_intersection

(v1.

begin()

,v1.

end(

),v2.

begin()

,v2.

end(

),target.

begin()

);};

//求取交集之後存到target裡

//並且會返回乙個迭代器,是最後交集的位置

for_each

(target.

begin()

,it,myprint)

;//一定要用返回的迭代器,如果用自身的end開闢多餘的容量會以0顯示出來

set_union

求兩個集合的並集

函式原型:

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

求兩個集合的並集

注意:兩個集合必須是有序序列

beg1 容器1開始迭代器

end1 容器1結束迭代器

beg2 容器2開始迭代器

end2 容器2結束迭代器

dest 目標容器開始迭代器

#include

#include

void

test1()

vector<

int>target;

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

target.

resize

(v1.

size()

+v2.

size()

);vector<

int>

::iterator it =

set_union

(v1.

begin()

,v1.

end(

),v2.

begin()

,v2,

end(

),target.

begin()

);for_each

(target.

begin()

,it,myprint)

;}

set_difference

求兩個集合的差集

函式原型:

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

求兩個集合的差集

注意:兩個集合必須是有序序列

差集存在順序差別

v1與v2容器的差集:v1中非交集部分

v2和v1容器的差集:v2中非交集部分

void

test1()

foreach

基於範圍的for迴圈

可以對集合、陣列、初始化列逐個訪問

1.範圍內的for

int a=

;for

(auto i:a)

//冒號前的部分,表示用於迴圈迭代的量,冒號後市用於被迭代的陣列,用auto宣告表示資料型別不定

//注意當陣列的大小在編譯時期無法確定時,不能使用範圍內for迴圈

2.foreach

foreach

(int e,vector<

int>v)

//使用e來遍歷v中的元素

//foreach的遍歷只可用於陣列,也可用於鍵值對的遍歷

常型別(C 學習筆記 30)

因為程式中各種形式的資料共享,在不同程度上破壞了資料的安全性。引入常型別的目的是,為了保證資料共享又防止資料被改動。int a 5 const int b a 其中,b 是乙個常引用,它所引用的物件不允許更改。如果出現 b 22 則非法。例 1 常引用作函式引數。在實際應用中,常引用往往用來作函式的...

Effective STL學習筆記 條款30

看個例子 我們使用transform函式給乙個容器承載計算結果 vector src 待計算的資料 vector res 計算結果 src.push back 0 src.push back 1 src.push back 2 src.push back 3 std transform src.be...

EJB3 0學習筆記

一.ejb3.0分為會話bean session bean mdb message driver bean 訊息驅動bean,實體bean entity bean 1.session bean 又分為有狀態的 stateful 和無狀態的 stateless stateful session bea...