连续迭代器有什么实际用途吗?
Is there any practical use for ContiguousIterator?
C++17 引入了ContiguousIterator
,但没有相应的contiguous_iterator_tag
。
如果无法通过std::iterator_traits
检查/强制执行ContiguousIterator
,是否有任何实际用途?
这个问题与连续迭代器检测不同,因为它不是"为什么它没有标签",而是"如果没有标签,如何使用它"。
C++17 中的命名要求首先是表示法。只有当它们施加可检测的要求时,它们才会与语言中可检测的事物相关联。并且连续迭代器不会对实现它们的类型施加可检测的要求。
因此,ContiguousIterator允许您做的最实际的事情是在文档中编写"您必须传递 ContiguousIterator",并理解读者将跟踪该术语的具体细节。但是不,C++17 中定义的连续迭代器不允许您编写任何可以静态检测连续迭代器和不连续随机访问迭代器之间差异的内容。
相关文章:
- 提供运算符+或运算符到双向迭代器有什么缺点吗?
- 连续迭代器有什么实际用途吗?
- 当通知迭代器参数初始化为空列表的开头时,list::insert 行为是什么?
- 创建可以遍历 std::map 值的通用模板迭代器的最简单方法是什么?
- 迭代器在容器中实际指向什么?
- 什么是迭代器
- ActorItr 迭代器变量中有什么,* ActorItr 返回什么?
- 在 C++17 中实现迭代器和const_iterator的正确方法是什么?
- 迭代器和标量对象之间的未定义行为有什么区别吗?
- 对于代理容器上的迭代器来说,"least bad implementation"可能是什么?
- 随机访问迭代器:我错过了什么?
- 使用 find() 通过 std::set 的迭代器将不起作用。出了什么问题?
- 无法取消引用超出范围的向量迭代器 - 有什么问题?
- map<int,int>的*迭代器是什么?它不是pair<int,int>
- 在下面的 C++ 代码中,*(迭代器)和 *(++迭代器)是什么意思?
- BOOST矩阵的迭代器1和迭代器2是什么,以及如何使用
- 使用什么作为 end() 迭代器C++?
- const_iterator<T>和迭代器<常量T>有什么区别?
- 什么时候足以将const_iterator声明为const迭代器
- 取消引用超出范围的矢量迭代器 - 什么适合以及为什么