std::set_union 及其亲属使用两对迭代器来操作要操作的集合。这很棒,因为它是最灵活的事情。然而,他们可以很容易地制作额外的便利功能,这对于 80% 的典型用途来说会更加优雅。
例如:
template<typename ContainerType, typename OutputIterator>
OutputIterator set_union( const ContainerType & container1,
const ContainerType & container2,
OutputIterator & result )
{
return std::set_union( container1.begin(), container1.end(),
container2.begin(), container2.end(),
result );
}
会转:
std::set_union( mathStudents.begin(), mathStudents.end(),
physicsStudents.begin(), physicsStudents.end(),
students.begin() );
进入:
std::set_union( mathStudents, physicsStudents, students.begin() );
所以:
有没有像这样的便利功能隐藏在我还没找到的地方?
如果没有,任何人都可以解释为什么它会被排除在 STL 之外吗?
在 boost 中是否有功能更全的集合库?(我找不到一个)
当然,我总是可以将我的实现放在某个实用程序库中,但是很难将这些东西组织起来,以便在所有项目中使用它们,但又不会不恰当地组合在一起。