【发布时间】:2014-03-13 15:32:01
【问题描述】:
我想找到两个集合的并集,即将它们加在一起。我知道.insert() 和std::set_union(),但是,据我所知,这些要求首先获得第二组开头和结尾的迭代器(或更糟的是set_union())。如果我能做类似+ 和+= 的事情就好了;对于实现集合的数学概念的类来说,这似乎是一个相当明显的特征。最简单的方法是什么?
【问题讨论】:
-
您能否展示一个您希望能够编写的代码示例?这个问题还不是很清楚。
-
set::begin和set::end具有恒定的时间复杂度。你对他们有什么看法? -
@C.R.不够简洁
-
我会定义一个命名空间lazy_stl,在那里根据std::set_union定义你的operator+并添加“使用命名空间lazy_stl;”无处不在 :) 编辑:嗯,第二个想法你可能不得不在 std 中定义它(这是不允许的 iirc)或显式范围它,这将破坏整个观点。 (由于 ADL)
-
简短回答:不。但是,如果您真的觉得
s1.insert(s2.begin(),s2.end())太冗长,您可以自己轻松地编写它。