c++标准库算法是否使用std::advance
Do C++ standard library algorithms use std::advance
我还没有找到合适的来源。是否所有的算法在<algorithm>
头使用std::advance
增加(并可能减少)迭代器?
还有另一个相关的后续-我看到了RandomAccessIterator概念的cppreference页面(http://en.cppreference.com/w/cpp/concept/RandomAccessIterator),但它没有解决迭代器类别具有成员别名的要求。如果迭代器类没有名为iterator_category
的成员类型定义,该成员类型别名为random_access_iterator_tag
,但支持在cppreference页面(http://en.cppreference.com/w/cpp/concept/RandomAccessIterator)中提到的RandomAccessIterator操作,那么c++标准库是否假设该迭代器是随机访问迭代器?
注释我想问这个问题是关于c++标准的。即。"标准是怎么说的?"
标准没有明确规定c++ std
算法的实现。它指定行为,有时还指定特定操作执行的次数。这可能使实现者没有多少实际选择,但它没有显式指定。
std::advance
从来没有在标准中被另一个算法调用过。这意味着它可以在特定算法的特定实现中使用,也可以不使用。
指定std::advance
的效果。只要其他算法指定了它们的操作计数,为了调用std::advance
,它必须不破坏它们的保证。
简而言之,使用它是允许的,而不是必须的。
相关文章:
- 使用std::multimap迭代器创建std::list
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- 从持续时间构造std::chrono::system_clock::time_point
- std::具有相同基类的类的变体
- std::向量与传递值的动态数组
- 使用std::vector的OpenCL矩阵乘法
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- std::condition_variable::wait()如何评估给定的谓词
- 如何获取std::result_of函数的返回类型
- std::原子加载和存储都需要吗
- std::advance - 仅在调试时偏移超出范围的故障
- 没有用于调用'std::advance'错误的匹配函数
- std::advance的替代品,它不会修改输入
- c++标准库算法是否使用std::advance
- 如何实现std::advance来改变迭代器类型上的行为
- std::advance和std::next有什么区别?
- 为什么 std::advance 不返回生成的迭代器