我有一组正整数std::set<set::<int> > X
。现在,给我一个集合std::set<int> V
,我想知道它是否出现在X
中。显然,这可以通过调用功能find来完成,因此如果X.find(V) != X.end()
位于V
中,则X
应该返回true。
我的问题是关于此运算的复杂性,即X
包含n组正整数,X.find(V)
的时间复杂度是多少?
我有一组正整数std :: set <:>>X。现在给了我一个std :: set
在一个集合中搜索元素的数量为O(log n),无论元素由什么构成,甚至其他集合也是如此。如果元素is
的另一个集合,则只需要一个排序谓词(使用对象的地址是安全的默认值)。但是,搜索嵌套在一组集合中的整数通常将为O(m log n)。[假设e
中有X
个集合,使得所有e
个集合的大小之和为n
,即|S1| + |S2| + ... + |Se| = n
,那么在最坏的情况下,X.find(V)
将取O(m*log(e))
,其中[ C0]是m
的大小,即V
。如您所见,它独立于|V| = m
。