ForwardIt2 swap_ranges(ExecutionPolicy&&policy, ForwardIt1 first1, ForwardIt1 last1, ForwardIt2 first2); (2)(C++17 起) 1)在范围[first1, last1)和始于first2的另一范围间交换元素。 2)同(1),但按照policy执行。此重载仅若std::is_execution_policy_v<std::decay_t<ExecutionPolicy>>为 true 才...
std::__and_<std::__is_swappable<_T1>, std::__is_swappable<_T2> >::value)>::type std::swap(pair<_T1, _T2>&, pair<_T1, _T2>&) [with _T1 = const int; _T2 = int; typename enable_if<(! __and_<__is_swappable
若算法无法分配内存,则抛出 std::bad_alloc。 可能的实现template<class ForwardIt1, class ForwardIt2> ForwardIt2 swap_ranges(ForwardIt1 first1, ForwardIt1 last1, ForwardIt2 first2) { while (first1 != last1) { std::iter_swap(first1++, first2++); } return first2; }示例...
swap_ranges( I1 first1, S1 last1, I2 first2, S2 last2 ); (1) (since C++20) template< ranges::input_range R1, ranges::input_range R2 > requires std::indirectly_swappable<ranges::iterator_t<R1>, ranges::iterator_t<R2>> constexpr swap_ranges_result<ranges::borrowed_iterator_t<R1...
#include <iostream> #include <vector> #include <algorithm> int main(int argc, char **argv) { std::vector<int> vecInt1 = { 1,2,3,4,5 }; std::vector<int> vecInt2 = { 6,7,8,9,10 }; std::swap_ranges(vecInt1.begin(), vecInt1.begin() + 3, vecInt2.begin()); auto ...
std::swap_ranges 编辑定义于头文件 <algorithm> (1) template< class ForwardIt1, class ForwardIt2 > ForwardIt2 swap_ranges( ForwardIt1 first1, ForwardIt1 last1, ForwardIt2 first2 ); (C++20 前) template< class ForwardIt1, class ForwardIt2 > constexpr ForwardIt2 swap_ranges( ...
std::swap_rangesC++ 算法库 定义于头文件 <algorithm> (1) template< class ForwardIt1, class ForwardIt2 > ForwardIt2 swap_ranges( ForwardIt1 first1, ForwardIt1 last1, ForwardIt2 first2 ); (C++20 前) template< class ForwardIt1, class ForwardIt2 > constexpr ForwardIt2 swap_ranges...
2) 否则为 (void)ranges::swap_ranges(t, u) ,若 T 和U 为到相等长度(但元素类型可能不同)的数组类型的左值引用,且 ranges::swap(*t, *u) 为合法表达式;3) 否则,若 T 与U 均为V& ,而 V 是满足 std::move_constructible<V> 和std::assignable_from<V&, V> 要求的某个类型,则如同用 V v...
名称ranges::swap代表一个定制点对象,它是字面Semiregular类类型的函数对象(为说明目的以SwapT表示)。SwapT的所有实例均相等。从而能自由地复制ranges::swap,且能交替使用其副本。 给定类型集合Args...,若std::declval<Args>()...满足上面给ranges::swap的参数要求,则SwapT将满足ranges::Invocable<constSwapT, ...
所有其他情况下,调用 ranges::iter_swap 为谬构,这能 ranges::iter_swap(e1, e2) 在出现于模板实例化的立即语境时导致替换失败。 仅用于阐释的函数模板 iter_exchange_move 等价地定义为: template<class X, class Y> constexpr std::iter_value_t<X> /*iter_exchange_move*/(X&& x, Y&& y) ...