1. 程式人生 > >容器的交集並集差集

容器的交集並集差集

使用泛型演算法,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計算並集,即兩個容器相同的部分