由于在C 11修订版中为标准包含添加了非成员 begin()
和 end()
函数,为什么还没有添加 rbegin()
和 rend()
函数的非成员版本?在开始使用 begin()
和 end()
的非成员版本后,我觉得很傻,但却发现我现在必须在使用成员函数和非成员函数调用之间切换 . (我意识到滚动我自己的 rbegin()
和 rend()
的非成员版本是微不足道的,但我添加了标准的'm wondering why this wasn') .
感谢您的输入 .
2 回答
您可以通过在
std::begin
和std::end
的结果上手动使用std::reverse_iterator
来构建反转范围 .奇怪的是,
reverse_iterator
没有标准的工厂功能 . 如果有,它可能看起来像这样:有了这个,你就可以做到
这个例子省去了指定
std::greater
比较器的麻烦,但是如果编译器无法从内部循环中删除增加的复杂性,则可以想象reverse_iterator
可能会对性能产生负面影响 .对于稍后看到此内容的人,非成员
rbegin()
和rend()
已经在C 14中 .