Àëãîðèòì iter_swap()
template< class ForwardIterator1, class ForwardIterator2 >
void
iter_swap( ForwardIterator1 a, ForwardIterator2 b );
iter_swap() îáìåíèâàåò çíà÷åíèÿ ýëåìåíòîâ, íà êîòîðûå óêàçûâàþò èòåðàòîðû a è b.
#include <algorithm>
#include <list>
#include <iostream.h>
int main()
{
int ia[] = { 5, 4, 3, 2, 1, 0 };
list< int,allocator > ilist( ia, ia+6 );
typedef list< int, allocator >::iterator iterator;
iterator iter1 = ilist.begin(),iter2,
iter_end = ilist.end();
// îòñîðòèðîâàòü ñïèñîê "ïóçûðüêîì" ...
for ( ; iter1 != iter_end; ++iter1 )
for ( iter2 = iter1; iter2 != iter_end; ++iter2 )
if ( *iter2 < *iter1 )
iter_swap( iter1, iter2 );
// ïå÷àòàåòñÿ:
// ilist ïîñëå ñîðòèðîâêè "ïóçûðüêîì" ñ ïîìîùüþ iter_swap():
// { 0 1 2 3 4 5 }
cout << "ilist ïîñëå ñîðòèðîâêè "ïóçûðüêîì" ñ ïîìîùüþ iter_swap(): { ";
for ( iter1 = ilist.begin(); iter1 != iter_end; ++iter1 )
cout << *iter1 << " ";
cout << "}\n";
return 0;
}