PRCYCoin  2.0.0.7rc1
P2P Digital Currency
reverse_iterate.h
Go to the documentation of this file.
1 // Copyright (c) 2015-2018 The PIVX developers
2 // Copyright (c) 2018-2020 The DAPS Project developers
3 // Distributed under the MIT software license, see the accompanying
4 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
5 
6 #pragma once
7 /*
8  Template used for reverse iteration in C++11 range-based for loops.
9  std::vector<int> v = {1, 2, 3, 4, 5};
10  for (auto x : reverse_iterate(v))
11  std::cout << x << " ";
12  */
13 
14 template <typename T>
16 {
17  T &x;
18 
19 public:
20  reverse_range(T &x) : x(x) {}
21 
22  auto begin() const -> decltype(this->x.rbegin())
23  {
24  return x.rbegin();
25  }
26 
27  auto end() const -> decltype(this->x.rend())
28  {
29  return x.rend();
30  }
31 };
32 
33 template <typename T>
35 {
36  return reverse_range<T>(x);
37 }
38 
reverse_iterate
reverse_range< T > reverse_iterate(T &x)
Definition: reverse_iterate.h:34
reverse_range::end
auto end() const -> decltype(this->x.rend())
Definition: reverse_iterate.h:27
reverse_range::begin
auto begin() const -> decltype(this->x.rbegin())
Definition: reverse_iterate.h:22
reverse_range::x
T & x
Definition: reverse_iterate.h:17
reverse_range
Definition: reverse_iterate.h:15
reverse_range::reverse_range
reverse_range(T &x)
Definition: reverse_iterate.h:20