C++ C++;11:非成员rbegin()/rend()函数

C++ C++;11:非成员rbegin()/rend()函数,c++,stl,iterator,c++11,C++,Stl,Iterator,C++11,既然在C++11修订版中为标准包含添加了非成员的begin()和end()函数,为什么还没有添加rbegin()和rend()函数的非成员版本?在开始使用非成员版本的begin()和end()之后,我觉得自己很傻,结果发现我现在不得不在使用成员和非成员函数调用之间切换。(我意识到推出我自己的rbegin()和rend()的非成员版本是微不足道的,但我想知道为什么没有将其添加到标准中) 感谢您的输入。您可以在std::begin和std::end的结果上手动使用std::reverse\u迭代器构

既然在C++11修订版中为标准包含添加了非成员的
begin()
end()
函数,为什么还没有添加
rbegin()
rend()
函数的非成员版本?在开始使用非成员版本的
begin()
end()
之后,我觉得自己很傻,结果发现我现在不得不在使用成员和非成员函数调用之间切换。(我意识到推出我自己的
rbegin()
rend()
的非成员版本是微不足道的,但我想知道为什么没有将其添加到标准中)


感谢您的输入。

您可以在
std::begin
std::end
的结果上手动使用
std::reverse\u迭代器构建反向范围

奇怪的是,
反向迭代器
没有标准的工厂函数。如果有,可能会是这样:

template< typename iter >
std::reverse_iterator< iter > reverse( iter i )
    { return { i }; }

这个例子省去了指定
std::greater
比较器的麻烦,但是
反向迭代器
如果编译器不能消除内部循环增加的复杂性,可能会对性能产生不利影响。

对于稍后看到这个例子的人,非成员
rbegin()
rend()
已经在C++14中了。

我记得在上的一次演示中提到过这一点。似乎这些函数只是被遗忘了,以后可能会(将?)添加到标准中。非成员的
begin()
end()
函数被添加到C++11的新形式的
for
语句使用。其他功能都没有,哈!这就是我所期望的。因为我看不到基于begin()非成员函数添加rbegin()的开销。拥抱C++ 14!
std::sort( reverse( std::end( my_array ) ), reverse( std::begin( my_array ) ) );