Постановка задачи: есть два массива. Некоторые элементы являются общими для этих массивов. Как и arr1 = {5,2,6}; и arr2 = {7,9,5,2,3}. Следовательно, 5,2 являются общими элементами, потому что они существуют в обоих массивах. Что касается вопроса, мне нужно исключить общие элементы из массивов. Таким образом, полученные массивы содержат arr1 = {5} и arr2 = {7,9,3}.
Мой подход заключается в том, чтобы сначала объединить оба массива в третий массив, а затем устранить дублирующиеся элементы с помощью операции set. Но при таком подходе элемент, который появляется во второй раз, удаляется, но сам элемент в списке. Кроме того, я получаю один список вместо двух отдельных списков.
Мой код:
#include <iostream>
#include <string>
#include<unordered_set>
int main()
{
std::unordered_set<int> remove_duplicate;
int arr[3]={5,2,6};
int arr1[5]={7,9,5,2,3};
int m= sizeof(arr)/sizeof(arr[0]);
int n= sizeof(arr1)/sizeof(arr1[0]);
int mergearr[m+n];
std::copy(arr,arr+m,mergearr);
std::copy(arr1,arr1+n,mergearr+m);
for(int i=0;i<(m+n);i++){
std::cout<<mergearr[i]<< ' ';
}
std::cout<< '\n';
for(int j=0;j<(m+n);j++){
remove_duplicate.insert(mergearr[j]);
}
for(auto it=remove_duplicate.begin();it!=remove_duplicate.end();++it){
std::cout<<' '<<*it;
}
return 0;
}
Вывод:
5 2 6 7 9 5 2 3
3 9 7 6 2 5
Как я могу решить эту проблему? Заранее спасибо.