Найти новые, удаленные и одинаковые элементы в векторе или коллекции по сравнению с другим - PullRequest
0 голосов
/ 27 мая 2019

Учитывая, что у вас есть две коллекции, не содержащие дубликатов:

std::vector<T*> previous;
std::vector<T*> current;

Существует ли элегантный способ разделить эти две коллекции на три коллекции, содержащие одинаковые элементы в обеих, элементы в текущий , который не был в предыдущий и элементы, которые были в предыдущий , которых нет в текущий ?В результате:

std::vector<T*> removed;
std::vector<T*> same;
std::vector<T*> inserted;

Может быть, есть функция std :: function, которая делает это?

EDIT:

Коллекции могут быть отсортированы, но так как они являются коллекциями указателейпо какой метрике, кроме значения их адреса?

Коллекции не должны содержать дубликатов.

1 Ответ

0 голосов
/ 27 мая 2019

Сначала вы можете найти пересечение ( тот же вектор) текущего и предыдущего, используя std :: set_intersection .После этого можно найти удаленное и вставленное с помощью std :: set_difference , вычитая найденное пересечение из предыдущего и текущего соответственно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...