У меня есть 2 экземпляра std :: set, для примеров один экземпляр соответствует состоянию набора в момент времени t, а другой - при t + 1.чистый способ перебора соединений наборы?
Я хочу перебрать союза (в математическом смысле) этих 2-х комплектов, так что:
- каждый элемент объединения обрабатывается один раз
- для каждого элемента я могу сказать в постоянном время, если он находится в первом сете, второй набор, или как
Вот пример того, что я сейчас делаю:
std::set<A> old_set, new_set;
for(auto it = old_set.begin(); it != old_set.end(); ++it) {
if(new_set.count(*it) == 0) {
//only in old set but not in new set
}
}
for(auto it = new_set.begin(); it != new_set.end(); ++it) {
if(old_set.count(*it) == 0) {
//only in new set but not in old set
}
}
Как вы можете видеть, в нем отсутствует часть, где мы обрабатываем элементы в обоих наборах, а также сложность недостаточно. Я думаю, что должен быть способ сделать то, что я хочу, просто перебирая все элементы набора
У кого-нибудь есть идея?
Благодаря
Как это дубликат? В другом вопросе явно говорится: «Опять я использую только« вектор »,« std :: set »не разрешен». Ответ может быть таким же, но вопрос не в этом! – TonyK