【发布时间】:2019-05-27 00:01:03
【问题描述】:
我注意到,如果不是所有容器,大多数容器现在都需要它们的 ::iterator 类型来满足 LegacySomethingIterator 而不是 SomethingIterator。
例如std::vector<>::iteratornow requires:
iteratorLegacyRandomAccessIterator
这对于大多数其他容器来说似乎都是一样的,都要求它们的迭代器从 SomethingIterator 转到 LegacySomethingIterator。
还有一些“新”需求取了旧需求的名字,比如RandomAccessIterator,为什么要加这些?在我看来,新变体只是覆盖了旧变体,没有区别。
为什么首先要创建新的,它们的要求在我看来是一样的。为什么新的要求不直接替换旧的要求,而不是现在有两个不同的名称(例如RandomAccessIterator 和LegacyRandomAccessIterator)?
【问题讨论】:
-
请注意,新旧迭代器要求确实存在一些差异:Why aren't ranges' algorithms compatible with std's iterators?
标签: c++ c++-concepts c++20