<分区>
我有 2 个 std::set 实例,例如一个实例对应于时间 t 的集合状态,另一个对应于 t+1 时的状态。
我想遍历这两个集合的并集(在数学意义上),这样:
- union 的每个元素都被处理一次
- 对于每个元素,我可以在常数时间内判断它是在第一组、第二组还是两者中
这是我目前正在做的一个例子:
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
}
}
如您所见,它缺少我们处理两个集合中的元素的部分,而且复杂性也不够好。我认为应该有一种方法可以通过简单地遍历集合中的所有元素来做我想做的事情
有没有人有想法?
谢谢