list::splice
Удаляет элементы из списка аргументов и вставляет их в список целевых объектов.
void splice(
iterator _Where,
list<Type, Allocator>& _Right
);
void splice(
iterator _Where,
list<Type, Allocator>& _Right,
iterator _First
);
void splice(
iterator _Where,
list<Type, Allocator>& _Right,
iterator _First,
iterator _Last
);
Параметры
_Where
Позиция в списке целевых объектов, перед которым будут вставлены элементы списка аргументов._Right
Список аргументов, который вставляется в список целевых объектов._First
Первый элемент в диапазоне, вставляемый в списке аргументов._Last
Первый элемент после конца диапазона, который необходимо вставить в списке аргументов.
Заметки
Первый функцию-член вставляет все элементы в списке аргументов перед элементом, расположенном на _Where в списке целевого объекта.Он также удаляет все элементы из списка аргументов.
Второй функцию-член удаляет элемент, на _First в списке аргументов и вставках его до того, как элемент в списке целевого объекта указал на _Where.
Третий функцию-член вставляет диапазон выделенный по [_First, _Last) из списка аргументов перед тем, как элемент в списке целевого объекта указал на _Where.Он также удаляет, вставленный диапазон из списка аргументов.
Во всех случаях только итераторы или ссылки, указывающие на соединенных элементах становятся недопустимыми.
Пример
// list_splice.cpp
// compile with: /EHsc
#include <list>
#include <iostream>
int main( )
{
using namespace std;
list <int> c1, c2, c3, c4;
list <int>::iterator c1_Iter, c2_Iter, w_Iter, f_Iter, l_Iter;
c1.push_back( 10 );
c1.push_back( 11 );
c2.push_back( 12 );
c2.push_back( 20 );
c2.push_back( 21 );
c3.push_back( 30 );
c3.push_back( 31 );
c4.push_back( 40 );
c4.push_back( 41 );
c4.push_back( 42 );
cout << "c1 =";
for ( c1_Iter = c1.begin( ); c1_Iter != c1.end( ); c1_Iter++ )
cout << " " << *c1_Iter;
cout << endl;
cout << "c2 =";
for ( c2_Iter = c2.begin( ); c2_Iter != c2.end( ); c2_Iter++ )
cout << " " << *c2_Iter;
cout << endl;
w_Iter = c2.begin( );
w_Iter++;
c2.splice( w_Iter,c1 );
cout << "After splicing c1 into c2: c2 =";
for ( c2_Iter = c2.begin( ); c2_Iter != c2.end( ); c2_Iter++ )
cout << " " << *c2_Iter;
cout << endl;
f_Iter = c3.begin( );
c2.splice( w_Iter,c3, f_Iter );
cout << "After splicing the first element of c3 into c2: c2 =";
for ( c2_Iter = c2.begin( ); c2_Iter != c2.end( ); c2_Iter++ )
cout << " " << *c2_Iter;
cout << endl;
f_Iter = c4.begin( );
l_Iter = c4.end( );
l_Iter--;
c2.splice( w_Iter,c4, f_Iter, l_Iter );
cout << "After splicing a range of c4 into c2: c2 =";
for ( c2_Iter = c2.begin( ); c2_Iter != c2.end( ); c2_Iter++ )
cout << " " << *c2_Iter;
cout << endl;
}
Требования
заголовок: <list>
std пространство имен: