Не было необходимости отказываться от std::set_intersection
.Проблема в том, что контейнер, получающий результаты, должен иметь соответствующий размер для хранения результатов.
Пустой вектор можно использовать, если вы использовали итератор std::back_inserter()
:
#include <vector>
#include <iterator>
#include <algorithm>
#include <iostream>
std::vector<int> commonElements(const std::vector<int>& v1, const std::vector<int>& v2)
{
std::vector<int> v3;
set_intersection(v1.begin(),v1.end(),v2.begin(),v2.end(), std::back_inserter(v3));
return v3;
}
int main()
{
auto test = commonElements({1,2,3,4,5}, {4,5,6,7,8});
for (auto &v : test )
std::cout << v << " ";
}
Выходные данные:
4 5