如何使用C ++中的STL找到两个数组之间的共同元素
给定两个数组,在C ++中使用STL找到这两个数组之间的公共元素。
示例:
输入:
arr1[] = {1, 45, 54, 71, 76, 12},
arr2[] = {1, 7, 5, 4, 6, 12}
输出: {1, 12}
输入:
arr1[] = { 1, 7, 5, 4, 6, 12 },
arr2[] = {10, 12, 11}
输出: {1, 4, 12}
方法:可以使用STL提供的 set_intersection() 函数找到公共元素。
语法:
set_intersection (InputIterator1 first1,InputIterator1 last1,
InputIterator2 first2,InputIterator2 last2,
OutputIterator result);
// C ++程序通过使用STL查找公共元素
//两个数组
#include
using namespace std;
int main()
{
//获取数组
int arr1 [] = {1,45,54,71,76,12};
int arr2 [] = {1,7,5,4,6,12};
//计算大小
int n1 = sizeof(arr1)/ sizeof(arr1 [0]);
int n2 = sizeof(arr2)/ sizeof(arr2 [0]);
//对数组进行排序
sort(arr1,arr1 + n1);
sort(arr2,arr2 + n2);
//打印数组
cout <<“第一个数组:”;
for(int i = 0; i < n1; i ++)
cout << arr1 [i]<<“”;
cout << endl;
cout <<“第二个数组:”;
for(int i = 0; i < n2; i ++)
cout << arr2 [i]<<“”;
cout << endl;
//初始化向量
//储存共同的值
//和一个迭代器
//遍历这个向量
vector v(n1 + n2);
vector :: iterator it,st;
it = set_intersection(arr1,arr1 + n1,
arr2,arr2 + n2,
v.begin());
cout <<“\ n共同元素:\ n”;
for(st = v.begin(); st!= it; ++ st)
cout << * st <<“,”;
cout << '\ n';
返回0;
}
第一个数组:1 12 45 54 71 76
第二个数组:1 4 5 6 7 12
共同元素:
1, 12,