[ Web Proxy ]
URL:
Viewing: http://ja.cppreference.com/cpp/algorithm/reverse [Back]  [Original]

std::reverse - cppreference.com
cppreference.com

std::reverse

: cppreference.com
 
C++
(C++20)
(C++20)
(C++17)
(C++11)
(C++11)
(C++11)
 
(C++20)
: std::sortable, std::projected, ...
: std::ranges::copy, std::ranges::sort, ...
(C++17)
(C++11)(C++11)(C++11)
(C++17)
(C++11)
()
(C++11)
/
(C++11)
(C++17)

C
 
<tbody> </tbody> <tbody class="t-dcl-rev t-dcl-rev-num "> </tbody><tbody> </tbody>
(1)
template< class BidirIt > void reverse( BidirIt first, BidirIt last );
(C++20)
template< class BidirIt > constexpr void reverse( BidirIt first, BidirIt last );
(C++20)
template< class ExecutionPolicy, class BidirIt > void reverse( ExecutionPolicy&& policy, BidirIt first, BidirIt last );
(2) (C++17)
1) [first, last)
i < (last-first)/2 first+i, (last-i) - 1 std::iter_swap
2) (1) policy std::is_execution_policy_v<std::decay_t<ExecutionPolicy>> true

first, last -
policy -
-
BidirIt ValueSwappable LegacyBidirectionalIterator

()

ExecutionPolicy

libstdc++ libc++

template<class BidirIt>
void reverse(BidirIt first, BidirIt last)
{
    while ((first != last) && (first != --last)) {
        std::iter_swap(first++, last);
    }
}

(last - first)/2

#include <vector>
#include <iostream>
#include <iterator>
#include <algorithm>
 
int main()
{
    std::vector<int> v{1,2,3};
    std::reverse(std::begin(v), std::end(v));
    for(auto e : v) std::cout << e;
    std::cout << '\n';
    
    int a[] = {4, 5, 6, 7};
    std::reverse(std::begin(a), std::end(a));
    for(auto e : a) std::cout << e;
}

:

321
7654


() [edit]

Web Proxy Viewer  |  New URL  |  Original Page