Базовые логи c верны, но синтаксис неверен:
mymap.count(x)
возвращает количество присутствующего ключа времени. Вы хотите mymap[x]
(или использовать std::multi_set
).
Line1 должно тогда быть:
mymap[input2[i]]--;
Кроме того, ваш первый l oop (с аналогичной ошибкой BTW) можно упростить до:
std::unordered_map<int,int> mymap;
for(int i=0;i<size1;i++){
mymap[input1[i]]++;
}
итоговый код:
void intersection(int input1[], int input2[], int size1, int size2) {
std::unordered_map<int,int> mymap;
for(int i=0;i<size1;i++){
mymap[input1[i]]++;
}
for(int i=0; i<size2; i++){
if (mymap[input2[i]] > 0){
cout << input2[i] << endl;
mymap[input2[i]]--;
}
}
}