Ошибка C3892 "_UDest: невозможно присваивать значения переменной, которая объявлена как константа"

Код:

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int n, m;
    cin >> n >> m;
    set<int> a, b;
    for (size_t i = 0; i < n; i++)
    {
        int x;
        cin >> x;
        a.insert(x);
    }
    for (size_t i = 0; i < m; i++)
    {
        int x;
        cin >> x;
        b.insert(x);
    }
    set_intersection(a.begin(), a.end(), b.begin(), b.end(), a.begin());
    for (auto& c : a)
        cout << c << " ";
}

Ошибка несомненно связана с set_intersection(), но какая именно, я не имею ни малейшего понятия. В чем причина данной ошибки?


Ответы (1 шт):

Автор решения: Harry

В том, что вы пытаетесь одновременно и читать, и писать в одно множество. Вы все равно планируете выводить результат - так сразу пишите в выходной поток:

set_intersection(a.begin(), a.end(), b.begin(), b.end(),
                 ostream_iterator<int>(cout, " "));
→ Ссылка