在C++ 11中有一个基于逆范围的?

Luc*_*ima 6 c++ stl c++11

可能重复:
基于C++ 11反向范围的for循环

是否有一个反基于范围forC++11

我想做这样的事情:

for(int value : vec)
{
    cout << value << endl;
}
Run Code Online (Sandbox Code Playgroud)

去做这个:

for(auto it = vec.rbegin(); it != vec.rend(); ++it)
{
    cout << *it << endl;
}
Run Code Online (Sandbox Code Playgroud)

例如:

for(int value : -vec)
{
    cout << value << endl;
}    
Run Code Online (Sandbox Code Playgroud)

有可能做这样的事情做一个反向循环吗?

Nic*_*las 11

你可以使用Boost.Range的反向适配器:

for(int value : ( vec | boost::adaptors::reversed ))
{...}
Run Code Online (Sandbox Code Playgroud)

但标准C++ 11没有类似的功能.

  • @BrendanLong FWIW,`boost :: adapters :: reverse(vec)`("缺少"`d`是有意的)也可以.但是使用`|`允许链接几个适配器而不会获得LISPy. (13认同)
  • 为什么C++人坚持使用这种奇怪的语法?是'逆转(vec)`那么糟糕? (3认同)
  • @BrendanLong,为什么人们会提出[文档中的基本原理]明确涵盖的问题(http://www.boost.org/doc/libs/1_51_0/libs/range/doc/html/range/reference/adaptors/ introduction.html)?RTFM难道吗?还有,你从未使用过unix管道吗?如果你有,那么语法并不那么奇怪,如果你没有,[这里是一个镍,孩子](http://dilbert.com/strips/comic/1995-06-24/) (3认同)
  • @NicolBolas` <<`正是我所说的C++人使用奇怪的语法;)问:你如何用C++打印东西?答:用字符串的值移位`cout`. (2认同)
  • @JonathanWakely我在bash中使用过管道,而不是用C++ ...我怀疑很多人会抱怨C++"不够像bash"...... (2认同)