常用集合演算法
演算法簡介:
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...