是否有一个容器适配器可以反转迭代器的方向,所以我可以反向迭代一个容器,基于范围的for循环?
使用显式迭代器,我会将其转换为:
for (auto i = c.begin(); i != c.end(); ++i) { ...
Run Code Online (Sandbox Code Playgroud)
进入这个:
for (auto i = c.rbegin(); i != c.rend(); ++i) { ...
Run Code Online (Sandbox Code Playgroud)
我想转换这个:
for (auto& i: c) { ...
Run Code Online (Sandbox Code Playgroud)
对此:
for (auto& i: std::magic_reverse_adapter(c)) { ...
Run Code Online (Sandbox Code Playgroud)
有这样的事情还是我必须自己写?
请考虑以下代码:
struct MyString
{
// some ctors
MyString& operator+=( const MyString& other ); // implemented correctly
};
MyString operator+( const MyString& lhs, const MyString& rhs )
{
MyString nrv( lhs );
nrv += rhs;
return nrv;
}
MyString&& operator+( MyString&& lhs, const MyString& rhs )
{
lhs += rhs;
return std::move( lhs ); // return the rvalue reference we received as a parameter!
}
Run Code Online (Sandbox Code Playgroud)
这适用于以下用例
MyString a, b, c; // initialized properly
MyString result = a + b + c; …Run Code Online (Sandbox Code Playgroud)