Cat*_*kul 2 c++ boost stl set-theory set
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 );
}
Run Code Online (Sandbox Code Playgroud)
会转:
std::set_union( mathStudents.begin(), mathStudents.end(),
physicsStudents.begin(), physicsStudents.end(),
students.begin() );
Run Code Online (Sandbox Code Playgroud)
成:
std::set_union( mathStudents, physicsStudents, students.begin() );
Run Code Online (Sandbox Code Playgroud)
所以:
是否有这样的便利功能隐藏在我找不到的地方?
如果没有,有什么理由可以将它排除在STL之外吗?
在boost中是否还有更全功能的集合库?(我找不到一个)
我当然可以总是将我的实现放在某个实用程序库中,但是很难将这些内容组织起来,以便它们可以在所有项目中使用,但不会被错误地聚集在一起.
是否有这样的便利功能隐藏在我找不到的地方?
不在标准库中.
如果没有,有什么理由可以将它排除在STL之外吗?
算法的一般思想是它们与迭代器一起工作,而不是容器.容器可以被修改,改变和戳; 迭代器不能.因此,您知道,在执行算法后,它没有改变容器本身,只能改变容器的内容.
在boost中是否还有更全功能的集合库?
Boost.Range做到了这一点.诚然,Boost.Range做更多的莫过于此.它的算法不带"容器"; 它们采用迭代器范围,STL容器恰好满足条件.他们也有懒惰的评价,这可能对性能很好.
归档时间: |
|
查看次数: |
374 次 |
最近记录: |