std::swap_ranges
Материал из cppreference.com
![]() |
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
Определено в заголовочном файле <algorithm>
|
||
template< class ForwardIt1, class ForwardIt2 > ForwardIt2 swap_ranges( ForwardIt1 first1, ForwardIt1 last1, ForwardIt2 first2 ) |
||
Обмен элементами между
[first1, last1)
диапазона и другой диапазон, начиная с first2
. Оригинал:
Exchanges elements between range
[first1, last1)
and another range starting at first2
. Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Содержание |
[править] Параметры
first1, last1 | - | первый ряд элементов для замены
Оригинал: the first range of elements to swap Текст был переведён автоматически через Google Translate. Вы можете проверить и исправить перевод. Для инструкций кликните сюда. |
first2 | - | начало второго ряда элементов для замены
Оригинал: beginning of the second range of elements to swap Текст был переведён автоматически через Google Translate. Вы можете проверить и исправить перевод. Для инструкций кликните сюда. |
Требования к типам | ||
-ForwardIt1, ForwardIt2 должен соответствовать требованиям ForwardIterator .
| ||
-The types of dereferenced ForwardIt1 and ForwardIt2 must meet the requirements of Swappable
|
[править] Возвращаемое значение
Итератор на элемент после последнего элемента обменять в диапазоне, начиная с
first2
.Оригинал:
Iterator to the element past the last element exchanged in the range beginning with
first2
.Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
[править] Возможная реализация
template<class ForwardIt1, class ForwardIt2> ForwardIt1 swap_ranges(ForwardIt1 first1, ForwardIt1 last1, ForwardIt2 first2) { while (first1 != last1) { std::iter_swap(first1++, first2++); } return first2; } |
[править] Пример
Демонстрирует замена поддиапазоны из разных контейнеров
Оригинал:
Demonstrates swapping of subranges from different containers
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
#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
Оригинал:
linear in the distance between
first
and last
Текст был переведён автоматически через Google Translate.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
Вы можете проверить и исправить перевод. Для инструкций кликните сюда.
[править] См. также
свопы элементов указал на двух итераторов Оригинал: swaps the elements pointed to by two iterators Текст был переведён автоматически через Google Translate. Вы можете проверить и исправить перевод. Для инструкций кликните сюда. (шаблон функции) | |
свопы значения двух объектов Оригинал: swaps the values of two objects Текст был переведён автоматически через Google Translate. Вы можете проверить и исправить перевод. Для инструкций кликните сюда. (шаблон функции) |