std::swap_ranges
ÐаÑеÑиал из cppreference.com
Defined in header <algorithm>
|
||
template< class ForwardIt1, class ForwardIt2 > ForwardIt2 swap_ranges( ForwardIt1 first1, ForwardIt1 last1, ForwardIt2 first2 ) |
||
Ðбмен ÑлеменÑов Ð¼ÐµÐ¶Ð´Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½Ð¾Ð¼ [first1, last1)
и дÑÑгим диапазоном, коÑоÑÑй наÑинаеÑÑÑ Ñ first2
. ÐолиÑеÑÑво ÑлеменÑов в ÑÑиÑ
двÑÑ
диапазонаÑ
должно ÑовпадаÑÑ.
СодеÑжание |
[пÑавиÑÑ] ÐаÑамеÑÑÑ
first1, last1 | â | пеÑвÑй диапазон Ð´Ð»Ñ Ð¾Ð±Ð¼ÐµÐ½Ð° |
first2 | â | наÑало вÑоÑого диапазона Ð´Ð»Ñ Ð¾Ð±Ð¼ÐµÐ½Ð° |
ТÑÐµÐ±Ð¾Ð²Ð°Ð½Ð¸Ñ Ðº Ñипам | ||
-ForwardIt1, ForwardIt2 должен ÑооÑвеÑÑÑвоваÑÑ ÑÑебованиÑм ForwardIterator .
| ||
-Тип поÑле ÑазÑменовÑÐ²Ð°Ð½Ð¸Ñ ForwardIt1 и ForwardIt2 должен ÑдовлеÑвоÑÑÑÑ ÑÑебованиÑм Swappable
|
[пÑавиÑÑ] ÐозвÑаÑаемое знаÑение
ÐÑеÑаÑоÑ, ÑказÑваÑÑий на ÑлеменÑ, поÑле поÑледнего во вÑоÑом диапазоне, наÑинаÑÑимÑÑ Ñ first2
.
[пÑавиÑÑ] ÐÐ¾Ð·Ð¼Ð¾Ð¶Ð½Ð°Ñ ÑеализаÑиÑ
template<class ForwardIt1, class ForwardIt2> ForwardIt1 swap_ranges(ForwardIt1 first1, ForwardIt1 last1, ForwardIt2 first2) { while (first1 != last1) { std::iter_swap(first1++, first2++); } return first2; } |
[пÑавиÑÑ] ÐÑимеÑ
ÐемонÑÑÑиÑÑÐµÑ Ð¾Ð±Ð¼ÐµÐ½ поддиапазонов из ÑазнÑÑ ÐºÐ¾Ð½ÑейнеÑов
ÐапÑÑÑиÑÑ ÑÑÐ¾Ñ ÐºÐ¾Ð´
#include <algorithm> #include <list> #include <vector> #include <iostream> int main() { std::vector<int> v = {1, 2, 3, 4, 5}; std::list<int> l = {-1, -2, -3, -4, -5}; std::swap_ranges(v.begin(), v.begin() + 3, l.begin()); for(int n : v) std::cout << n << ' '; std::cout << '\n'; for(int n : l) std::cout << n << ' '; std::cout << '\n'; }
ÐÑвод:
-1 -2 -3 4 5 1 2 3 -4 -5
[пÑавиÑÑ] СложноÑÑÑ
ÐÐ¸Ð½ÐµÐ¹Ð½Ð°Ñ Ð¾Ñ ÑаÑÑÑоÑÐ½Ð¸Ñ Ð¼ÐµÐ¶Ð´Ñ first
и last
[пÑавиÑÑ] См. Ñакже
обмен ÑлеменÑов, на коÑоÑÑе ÑказÑваÑÑ Ð¸ÑеÑаÑоÑÑ (Ñаблон ÑÑнкÑии) | |
обмен знаÑÐµÐ½Ð¸Ñ Ð´Ð²ÑÑ
обÑекÑов (Ñаблон ÑÑнкÑии) |