The Wayback Machine - https://web.archive.org/web/20180222073046/http://ru.cppreference.com:80/w/cpp/algorithm/swap_ranges
Пространства имён
Варианты
Действия

std::swap_ranges

Материал из cppreference.com
< cpp‎ | algorithm
 
 
Алгоритмы
Функции
Немодифицирующие линейные операции
Модифицирующие линейные операции
Разделение
Сортировка (на отсортированных промежутках)
Бинарный поиск (на отсортированных промежутках)
Множества (на отсортированных промежутках)
Куча
Минимум/максимум
Числовые операции
Библиотека C
 
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

[править]См. также

обмен элементов, на которые указывают итераторы
(шаблон функции)[править]
обмен значения двух объектов
(шаблон функции)[править]
close