Программирование >>  Инициализация объектов класса, структура 

1 ... 372 373 374 [ 375 ] 376 377 378 ... 395


#include <algorithm> #include <vector> #include <iostream.h>

void print char( char elem ) { cout << void (*ppc)( char ) = print char;

elem ; }

void

/* печатается:

ilmsu ilmus ilsmu ilsum ilums ilusm imlsu imlus

imslu imsul imuls imusl islmu islum ismlu ismul

isulm isuml iulms iulsm iumls iumsl iuslm iusml

limsu limus lismu lisum liums liusm lmisu lmius

lmsiu lmsui lmuis lmusi lsimu lsium lsmiu lsmui

lsuim lsumi luims luism lumis lumsi lusim lusmi

milsu milus mislu misul miuls miusl mlisu mlius

mlsiu mlsui mluis mlusi msilu msiul msliu mslui

msuil msuli muils muisl mulis mulsi musil musli

silmu silum simlu simul siulm siuml slimu slium

slmiu slmui sluim slumi smilu smiul smliu smlui

smuil smuli suilm suiml sulim sulmi sumil sumli

uilms uilsm uimls uimsl uislm uisml ulims ulism

ulmis ulmsi ulsim ulsmi umils umisl umlis umlsi

umsil umsli usilm usiml uslim uslmi usmil usmli

int main()

vector<char,allocator> vec(5);

последовательность стволов: musil

vec[0] = vec[1] = u; vec[2] = s;

vec[3] = i; vec[4] = l;

int cnt = 2;

sort( vec.begin(), vec.end() );

for each( vec.begin(), vec.end(), ppc ); cout << \t ;

генеруются все перестановки строки musil while( next permutation( vec.begin(), vec.end()))

for each( vec.begin(), vec.end(), ppc );

cout << \t ;

if ( ! ( cnt++ % 8 )) {

cout << \n ;

cnt = 1;

cout << \n\n ;

return 0;



template < class RandomAccessIterator > void

nth element( RandomAccessIterator first, RandomAccessIterator nth, RandomAccessIterator last );

template < class RandomAccessIterator, class Compare > void

nth element( RandomAccessIterator first, RandomAccessIterator nth,

Алгоритм nth element()

RandomAccessIterator last, Compare comp );

nth element() переупорядочивает последовательность, ограниченную диапазоном [first,last) , так что все элементы, меньшие чем тот, на который указывает итератор nth, оказываются перед ним, а все большие элементы - после. Например, если есть массив

int ia[] = {29,23,20,22,17,15,26,51,19,12,35,40};

то вызов nth element() , в котором nth указывает на седьмой элемент (его значение равно 26):

nth element( &ia[0], &ia[6], &ia[2] );

генерирует последовательность, в которой семь элементов, меньших 26, оказываются слева от 26, а четыре элемента, больших 26, справа:

Г{23,20,22,17,15,19,12,26,51,35,40,29}

При этом не гарантируется, что элементы, расположенные по обе стороны от nth, упорядочены. В первом варианте для сравнения используется оператор меньше , определенный для типа элементов контейнера, во втором - бинарная операция сравнения, заданная программистом.



#include <algorithm> #include <vector> #include <iostream.h>

/* печатается:

исходн вектор: 29 23 20 22 17 15 26 51 19 12 35 40 вектор, отсортованн относительно элемента 26

12 15 17 19 20 22 23 26 51 29 35 40

вектор, отсортованн по убан относительно элемента 23

40 35 29 51 26 23 22 20 19 17 15 12 */

int main()

int ia[] = {29,23,20,22,17,15,26,51,19,12,35,40};

vector< int,allocator > vec( ia, ia+12 ); ostream iterator<int> out( cout, );

cout << исходн вектор: ;

copy( vec.begin(), vec.end(), out ); cout << endl;

cout << вектор, отсортованн относительно элемента

<< *( vec.begin()+6 ) << endl; nth element( vec.begin(), vec.begin()+6, vec.end() ); copy( vec.begin(), vec.end(), out ); cout << endl;

cout << вектор, отсортованн по убан << относительно элемента

<< *( vec.begin()+6 ) << endl; nth element( vec.begin(), vec.begin()+6,

vec.end(), greater<int>() ); copy( vec.begin(), vec.end(), out ); cout << endl;

template < class RandomAccessIterator > void

partial sort( RandomiAccessIterator first, RandomAccessIterator middle, RandomAccessIterator last );

template < class RandomAccessIterator, class Compare > void

partial sort( RandomAccessIterator first, RandomAccessIterator middle,

Алгоритм partial sort()

RandomAccessIterator last, Compare comp );

partial sort() сортирует часть последовательности, укладывающуюся в диапазон [first,miiddle). Элементы в диапазоне [middle,last) остаются неотсортированными. Например, если дан массив

int ia[] = {29,23,20,22,17,15,26,51,19,12,35,40};



1 ... 372 373 374 [ 375 ] 376 377 378 ... 395

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика