1 #ifndef STAN_MATH_PRIM_FUN_REVERSE_HPP 2 #define STAN_MATH_PRIM_FUN_REVERSE_HPP 3 4 #include <stan/math/prim/meta.hpp> 5 #include <stan/math/prim/fun/Eigen.hpp> 6 #include <algorithm> 7 #include <vector> 8 9 namespace stan { 10 namespace math { 11 12 /** 13 * Return a copy of the specified array in reversed order. 14 * 15 * @tparam T type of elements in the array 16 * @param x array to reverse 17 * @return Array in reversed order. 18 */ 19 template <typename T> reverse(const std::vector<T> & x)20inline std::vector<T> reverse(const std::vector<T>& x) { 21 std::vector<T> rev(x.size()); 22 std::reverse_copy(x.begin(), x.end(), rev.begin()); 23 return rev; 24 } 25 26 /** 27 * Return a copy of the specified vector or row vector 28 * in reversed order. 29 * 30 * @tparam T type of container (vector or row vector) 31 * @param x vector or row vector to reverse 32 * @return Vector or row vector in reversed order. 33 */ 34 template <typename T, typename = require_vector_t<T>> reverse(const T & x)35inline auto reverse(const T& x) { 36 return x.reverse(); 37 } 38 39 } // namespace math 40 } // namespace stan 41 #endif 42