|
Программирование >> Инициализация объектов класса, структура
#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};
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |