c++标准库算法是否使用std::advance

Do C++ standard library algorithms use std::advance

本文关键字:std advance 是否 标准 算法 c++      更新时间:2023-10-16

我还没有找到合适的来源。是否所有的算法在<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,它必须不破坏它们的保证。

简而言之,使用它是允许的,而不是必须的。