遍历集合联合的干净方法?

大风球

我有2个std :: set实例,例如,一个实例对应于时间t处集合的状态,另一个实例对应于t + 1处。

我想遍历这两个集合的联合(在数学意义上),使得:

  • 联合的每个元素都要处理一次
  • 对于每个元素,我都可以在恒定时间内告诉它是在第一组,第二组还是两者中

这是我目前正在做的一个例子:

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
    }
}

如您所见,它缺少我们处理这两个集合中的元素的部分,而且复杂性还不够好。我认为应该有一种方法可以通过简单地迭代集合中的所有元素来做我想做的事情

有人有主意吗?

谢谢

贾罗德42

您可以执行以下操作:

template <typename T, typename D>
void iterate(std::set<T>& s1, std::set<T>& s2, D d)
{
    auto it1 = s1.begin();
    auto it2 = s2.begin();

    while (it1 != s1.end() && it2 != s2.end()) {
        if (*it1 < *it2) {
            // only in set1
            d.visit1(*it1);
            ++it1;
        } else if (*it2 < *it1) {
            // only in set2
            d.visit2(*it2);
            ++it2;
        } else {
            // in both
            d.visitboth(*it1, *it2);
            ++it1;
            ++it2;
        }
    }
    for (; it1 != s1.end(); ++it1) {
        // only in set1
        d.visit1(*it1);
    }
    for (; it2 != s2.end(); ++it2) {
        // only in set2
        d.visit2(*it2);
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

迭代集联合的干净方法?

来自分类Dev

在Julia中循环遍历屏蔽列表的干净方法

来自分类Dev

遍历集合/剩余集的pythonic方法

来自分类Dev

遍历实例化类集合的方法调用

来自分类Dev

Rails:在模型的Class方法内遍历集合

来自分类Dev

Postgresql:使用不同的参数多次重复查询-比联合体更干净的方法?

来自分类Dev

测试函数是否已应用于集合的每个项目的干净方法?

来自分类Dev

什么是迭代嵌套对象集合的更干净或更有效的方法

来自分类Dev

在使用Lambda遍历集合时使用setter方法

来自分类Dev

循环遍历 HTML 集合的正确方法是什么

来自分类Dev

Java中的集合内集合的结合(联合)

来自分类Dev

遍历集合中的数组

来自分类Dev

遍历集合的元素

来自分类Dev

在C ++中遍历集合

来自分类Dev

根据索引遍历集合

来自分类Dev

遍历mongodb集合

来自分类Dev

遍历Firebase集合

来自分类Dev

遍历js集合

来自分类Dev

循环遍历键集合

来自分类Dev

遍历集合 - laravel

来自分类Dev

有没有一种更干净的方法可以在Fantom中遍历Mongo查询结果?

来自分类Dev

清除Logstash的干净方法

来自分类Dev

与集合或联合类型相关的严格别名

来自分类Dev

存储实体的集合而不遍历集合

来自分类Dev

Arcobjects联合方法

来自分类Dev

如何遍历Stripe订阅集合

来自分类Dev

流星:遍历集合内部的对象

来自分类Dev

MongodbCursor,如何遍历庞大的集合?

来自分类Dev

遍历数据集合-Ruby