我一直在研究一些算法,我想知道为什么它们中的一些还没有容纳容器的变体.
例如,find可以在一个容器中和值和所述算法可以在内部迭代器在容器通过调用begin和end所述容器的.与unique_copy传递容器和算法使用似乎更有用的地方相同,push_back而不是需要迭代器,我将被迫将数组的大小调整为最大元素数.for_each是另一个这样的例子.
我相信我不知道有充分的理由吗?
Die*_*ühl 13
我可以看到两个主要原因:
std::copy()你有两个范围的东西,每个范围都要独立地指定为范围(适当的抽象不是容器,BTW,而是游侠)或一对迭代器,使它已经4次重载.std::find()它在将迭代器作为参数时显然返回迭代器.给定范围时,返回另一个范围实际上可能更合理.更糟糕的是,除非你最初有一个通过范围(例如,从流中读取的东西),否则甚至可以选择两个不同的范围,即开始找到对象,找到对象结束.另一个维度可以是获取所选范围的副本而不是迭代器分隔的范围的选择.当最初提出STL时,它首先被认为是Crazy Talk!试图说服人们打开另一种主要的蠕虫来正确处理范围可能很容易扼杀整个想法.然后立即采取的后续问题就是:为什么这不会改变?......这个问题也有两个答案:
| 归档时间: |
|
| 查看次数: |
275 次 |
| 最近记录: |