stl — C ++ метод set_difference не работает должным образом

Я пытаюсь найти разницу между этими двумя наборами {1,2,3,4,5,6} и
{1, 3, 6, 4, 1, 2}. missing вектор должен содержать только {5}, но он содержит {2,4,5}. Что я здесь не так делаю?

#include <set>
#include <vector>
#include <iostream>
using namespace std;
int solution(vector<int> &A) {
vector<int> missing;
vector<int> range(A.size());
for(int i=1; i<= A.size(); i++) range[i-1] = i;

set_difference(range.begin(), range.end(), A.begin(), A.end(), std::inserter(missing, missing.end()));
return missing[0]; // Missing contains 2,4,5 where as it should had contain just 5
}

int main(){
vector<int> A = {1, 3, 6, 4, 1, 2};
cout << solution(A);
return 0;
}

-2

Решение

Второй аргумент станд :: вставки метод должен быть missing.begin () не missing.end ().

std::sort(A.begin(),A.end());

set_difference(range.begin(), range.end(), A.begin(), A.end(), std::inserter(missing, missing.begin()));
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]