swap_ranges
Обменивает элементы одного диапазона с элементами других, равными - указанным размером диапазоном.
template<class ForwardIterator1, class ForwardIterator2>
ForwardIterator2 swap_ranges(
ForwardIterator1 _First1,
ForwardIterator1 _Last1,
ForwardIterator2 _First2
);
Параметры
_First1
Передний итератор, указывающим на первую позицию первого диапазона, элементы которого следует обменянным._Last1
Передний итератор, указывающий одно за последней позиции первого диапазона, элементы которого следует обменянным._First2
Передний итератор, указывающим на первую позицию второго диапазона, элементы которого следует обменянным.
Возвращаемое значение
Передний итератор, указывающий одно за последней позиции второго диапазона, элементы которого следует обменянным.
Заметки
Ссылочные диапазона должны быть допустимыми; все указатели должны быть dereferenceable и внутри каждой последовательности последняя позиция доступен из первого инкрементацией.Второй диапазон должно быть большим в качестве первого диапазон.
Сложность линейная с _Last1 – выполняются обмен _First1.Если переключиться из контейнеров элементов одного типа, то они функцию-член swap из контейнера должны использоваться, поскольку функцию-член как правило, имеет постоянное сложность.
Пример
// alg_swap_ranges.cpp
// compile with: /EHsc
#include <vector>
#include <deque>
#include <algorithm>
#include <iostream>
int main( )
{
using namespace std;
vector <int> v1;
deque <int> d1;
vector <int>::iterator v1Iter1;
deque<int>::iterator d1Iter1;
int i;
for ( i = 0 ; i <= 5 ; i++ )
{
v1.push_back( i );
}
int ii;
for ( ii =4 ; ii <= 9 ; ii++ )
{
d1.push_back( 6 );
}
cout << "Vector v1 is ( " ;
for ( v1Iter1 = v1.begin( ) ; v1Iter1 != v1.end( ) ;v1Iter1 ++ )
cout << *v1Iter1 << " ";
cout << ")." << endl;
cout << "Deque d1 is ( " ;
for ( d1Iter1 = d1.begin( ) ; d1Iter1 != d1.end( ) ;d1Iter1 ++ )
cout << *d1Iter1 << " ";
cout << ")." << endl;
swap_ranges ( v1.begin ( ) , v1.end ( ) , d1.begin ( ) );
cout << "After the swap_range, vector v1 is ( " ;
for ( v1Iter1 = v1.begin( ) ; v1Iter1 != v1.end( ) ;v1Iter1 ++ )
cout << *v1Iter1 << " ";
cout << ")." << endl;
cout << "After the swap_range deque d1 is ( " ;
for ( d1Iter1 = d1.begin( ) ; d1Iter1 != d1.end( ) ;d1Iter1 ++ )
cout << *d1Iter1 << " ";
cout << ")." << endl;
}
Требования
заголовок: <algorithm>
std пространство имен: