容器的交集並集差集
阿新 • • 發佈:2018-12-27
使用泛型演算法,mark一下
#include <vector> #include <iostream> #include <iterator> #include <algorithm> int main() { std::vector<int> firstVec = {1,3,7,3,8,10,34}; std::vector<int> secondVec = {3,8,54,10,37}; std::ostream_iterator<int> out_iter(std::cout, " "); merge(firstVec.cbegin(), firstVec.cend(), secondVec.cbegin(), secondVec.cend(), out_iter); std::cout << std::endl; set_union(firstVec.cbegin(), firstVec.cend(), secondVec.cbegin(), secondVec.cend(), out_iter); std::cout << std::endl; set_difference(firstVec.cbegin(), firstVec.cend(), secondVec.cbegin(), secondVec.cend(), out_iter); std::cout << std::endl; set_intersection(firstVec.cbegin(), firstVec.cend(), secondVec.cbegin(), secondVec.cend(), out_iter); return 0; }
上結果
結論:
merge操作合併所有資料,包括兩個容器中相同部分;
set_union合併所有資料,但兩個容器相同部分保留一個。但容器本身相同值不影響
set_difference計算差集,但不是兩個容器的差集,而是第一個容器排除兩個容器相同部分,剩餘的值
set_intersection計算並集,即兩個容器相同的部分