Programmer’s Reference



страница17/19
Дата21.09.2016
Размер2.35 Mb.
#10416
1   ...   11   12   13   14   15   16   17   18   19

partial_sort


void partial_sort ( RandIter start , RandIter mid ,

RandIter end ) ;

void partial_sort ( RandIter start , RandIter mid ,

RandIter end , Comp cmpfn ) ;

Алгоритъма partial_sort ( ) сортира редицата start – end . Обаче след изпълнението само елементите в поредицата start – mid ще бъдат сортирани в ред . Втората форма ви позволява да определите сравнителна функция която определя кога един елемент е по – малък от друг .


partial_sort_copy


RandIter partial_sort_copy ( InIter start , InIter end ,

RandIter res_start , RandIter res_end ) ;

RandIter partial_sort_copy ( InIter start , InIter end ,

RandIter res_start , RandIter res_end ,

Comp cmpfn ) ;

Алгоритъма partial_sort_copy ( ) сортира интервала start – end и след това копира елементите които ще бъдат сложени в резултатната редица определена от res_start до res_end . Връща се итератор за последния елемент копиран в резултатната поредица . Втората форма ви позволява да определите сравнителна функция която определя кога един елемент е по – малък от друг .


partition


BiIter partition ( BiIter start , BiIter end , UnPred pfn ) ;

Алгоритъма partition ( ) подрежда редицата определена от start до end така че всички елементи за които предиката pfn връща true идват преди онези за които предиката връща false . Тя връща итератор за началото на елементите за които предиката е false .


pop_heap


void pop_heap ( RandIter start , RandIter end ) ;

void pop_heap ( RandIter start , RandIter end , Comp cmpfn ) ;

Алгоритъма pop_heap ( ) разменя first и last – 1 елементити и тогава преизгражда хийпа . Втората форма ви позволява да определите сравнителна функция която определя кога един елемент е по – малък от друг .


prev_permutation


bool prev_permutation ( BiIter start , BiIter end ) ;

bool prev_permutation ( BiIter start , BiIter end ,

Comp cmpfn ) ;

Алгоритъма prev_permutation ( ) конструира предишната пермутация на редицата . Пермутациите се генерират приемайки сортирана редица от ниско към високо представяне за първа пермутация . Ако не съществува предишна пермутация , prev_permutation ( ) сортира редицата като нейна последна пермутация и връща false . В противен случай връща true . Втората форма ви позволява да определите сравнителна функция която определя кога един елемент е по – малък от друг .


push_heap


void push_heap ( RandIter start , RandIter end ) ;

void push_heap ( RandIter start , RandIter end ,

Comp cmpfn ) ;

Алгоритъма push_heap ( ) слага елемент в края на хийпа . Интервала определен от start до end е приет да представлява валиден хийп . Втората форма ви позволява да определите сравнителна функция която определя кога един елемент е по – малък от друг .


random_shuffle


void random_shuffle ( RandIter start , RandIter end ) ;

void random_shuffle ( RandIter start , RandIter end ,

Generator rand_gen ) ;

Алгоритъма random_shuffle ( ) разбърква редицата определена от startend . Втората форма ви позволява да определя потребителски генератор на случайни числа . Тази функция трябва да има следната обща форма :

rand_gen ( num ) ;

Тя трябва да връща случайно число между 0 и num .


remove , remove_if , remove_copy и

remove_copy_If


ForIter remove ( ForIter start , ForIter end , const T &val ) ;

ForIter remove_if ( ForIter start , ForIter end , UnPred pfn ) ;

OutIter remove_copy ( InIter start , InIter end , OutIter result ,

const T &val ) ;

OutIter remove_copy_if ( InIter start , InIter end ,

OutIter result , const T &val ,

UnPred pfn ) ;

Алгоритъма remove ( ) премахва елементи от определения интервал които са равни на val . Връща итератор за края на останалите елементи .

Алгоритъма remove_if ( ) премахва елементите от определения интервал за които предиката pfn e true . Връща итератор за края на останалите елементи .

Алгоритъма remove_copy ( ) копира елементите от определения интервал които са равни на val и слага резултата в поредицата определена от result . Връща итератор за края на result .

Алгоритъма remove_copy_if ( ) копира елементите от определения интервал за които предиката pfn e true и слага резултата в поредицата определена от result . Връща итератор за края на result .

replace , replace_copy , replace_if и

replace_copy_If


void replace ( ForIter start , ForIter end , const T &old ,

Const T &new ) ;

void replace_if ( ForIter start , ForIter end , UnPred pfn ,

Const T &new ) ;

OutIter replace_copy ( InIter start , InIter end ,

OutIter result ,

const T &old , Const T &new ) ;

OutIter replace_copy_if ( InIter start , InIter end ,

OutIter result ,

UnPred pfn , Const T &new ) ;

В определения интервал алгоритъма replace ( ) разменя елементите които имат стойност old със елементите които имат стойност new .

В определения интервал алгоритъма replace_if ( ) разменя елементите за които предиката pfn e true със елементите които имат стойност new .

В определения интервал алгоритъма replace_copy ( ) копира елементи в result . В този процес разменя елементите със стойност old със елементи със стойност new . Първоначалния интервал е непроменен . Връща итератор за края на result .

В определения интервал алгоритъма replace_copy_if ( ) копира елементи в result В този процес разменя елементите за които предиката pfn връща true със елементи със стойност new . Първоначалния интервал е непроменен . Връща итератор за края на result .

reverse и reverse_copy


void reverse ( BiIter start , BiIter end ) ;

OutIter reverse_copy ( BiIter first , BiIter last ,

OutIter result ) ;

Алгоритъма reverse ( ) обръща реда на интервала определен от start и end .

Алгоритъма reverse_copy ( ) копира в обърнат ред интервала определен от start и end и съхранява ресултата в result . Връща итератор за края на result .

rotate и rotate_copy


void rotate ( ForIter start , ForIter mid , ForIter end ) ;

OutIter rotate_copy ( ForIter start , ForIter mid , ForIter end

OutIter result ) ;

Алгоритъма rotate ( ) ротира наляво елементите в интервала от start до end така че елемента определен от mid става новия първи елемент .

Алгоритъма rotate_copy ( ) копира интервала от start до end съхранявайки резултата във result . По време на процеса ротира наляво елементите така че елемента определен от mid става новия първи елемент . Връща итератор за края на result .

search


ForIter1 search ( ForIter1 start1 , ForIter1 end1 ,

ForIter2 start2 , ForIter2 end2 ) ;

ForIter1 search ( ForIter1 start1 , ForIter1 end1 ,

ForIter2 start2 , ForIter2 end2 ,BinPred pfn );

Алгоритъма search ( ) търси за поредица във редица . Редицата която се претърсва е определена от start1 и end1 . Поредицата която се търси е определена от start2 и end2 . Ако поредицата е открита се връща итератор за нейното начало . В противен случай се връща end1 . Втората форма ви позволява да определите бинарен предикат който определя кога един елемент е равен на друг .


search_n


ForIter search­_n ( ForIter start , ForIter end , Size num ,

Const T &val ) ;

ForIter search­_n ( ForIter start , ForIter end , Size num ,

Const T &val , BinPred pfn ) ;

Алгоритъма search_n ( ) търси за редица от подобни на num елементи в редица . Редицата която се претърсва е определена от start и end . Ако поредицата е открита се връща итератор за нейното начало . В противен случай се връща end . Втората форма ви позволява да определите бинарен предикат който определя кога един елемент е равен на друг .


set_difference


OutIter set_difference ( InIter1 start1 , InIter1 end1 ,

InIter2 start2 , InIter2 end2 ,

OutIter result ) ;

OutIter set_difference ( InIter1 start1 , InIter1 end1 ,

InIter2 start2 , InIter2 end2 ,

OutIter result , Comp cmpfn ) ;

Алгоритъма set_difference ( ) произвежда редица която съдържа разликата между две подредени множества определени от start1 , end1 и start2 , end2 . Така множеството определено от start2 , end2 се изважда от множеството start1 , end1 . Резултата е подреден и сложен във result . Връща итератор за края на result . Втората форма ви позволява да определите сравнителна функция която определя кога един елемент е по – малък от друг .


set_intersection


OutIter set_intersection ( InIter1 start1 , InIter1 end1 ,

InIter2 start2 , InIter2 end2 ,

OutIter result ) ;

OutIter set_intersection ( InIter1 start1 , InIter1 end1 ,

InIter2 start2 , InIter2 end2 ,

OutIter result , Comp cmpfn ) ;

Алгоритъма set_intersection ( ) произвежда редица която съдържа сечението на две подредени множества определени от start1 , end1 и start2 , end2 . Това са елементите открити и във двете множества . Резултата е подреден и сложен във result . Връща итератор за края на result . Втората форма ви позволява да определите сравнителна функция която определя кога един елемент е

по – малък от друг .

set_symetric_difference


OutIter set_symetric_difference ( InIter1 start1 , InIter1 end1 ,

InIter2 start2 , InIter2 end2 ,

OutIter result ) ;

OutIter set_symetric_difference ( InIter1 start1 , InIter1 end1 ,

InIter2 start2 , InIter2 end2 ,

OutIter result , Comp cmpfn ) ;

Алгоритъма set_symetric_difference ( ) произвежда редица която съдържа симетричната разлика между две подредени множества определени от start1 , end1 и start2 , end2 . Това е резултатно множество съдържа само онези елементи които не са общи за двете множества . Резултата е подреден и сложен във result . Връща итератор за края на result . Втората форма ви позволява да определите сравнителна функция която определя кога един елемент е по – малък от друг .


set_union


OutIter set_union ( InIter1 start1 , InIter1 end1 ,

InIter2 start2 , InIter2 end2 ,OutIter result );

OutIter set_union ( InIter1 start1 , InIter1 end1 ,

InIter2 start2 , InIter2 end2 , OutIter result

Comp cmpfn ) ;

Алгоритъма set_union ( ) произвежда редица която съдържа обединението на две подредени множества определени от start1 , end1 и start2 , end2 . Така резултатното множество съдържа тези елементи които са и във двете множества . Резултата е подреден и сложен във result . Връща итератор за края на result . Втората форма ви позволява да определите сравнителна функция която определя кога един елемент е по – малък от друг .


sort


void sort ( RandIter start , RandIter end ) ;

void sort ( RandIter start , RandIter end , Comp cmpfn ) ;

Алгоритъма sort ( ) сортира интервала определен от start и end . Втората форма ви позволява да определите сравнителна функция която определя кога един елемент е по – малък от друг .


sort_heap


void sort_heap ( RandIter start , RandIter end ) ;

void sort_heap ( RandIter start , RandIter end , Comp cmpfn ) ;

Алгоритъма sort_heap ( ) сортира хийп определен от start и end . Втората форма ви позволява да определите сравнителна функция която определя кога един елемент е по – малък от друг .


stable_partition


BiIter stable_partition ( BiIter start , BiIter end ,

BinPred pfn ) ;

Алгоритъма stable_partition ( ) подрежда редицата определена от start и end така че всички елементи за които предиката определен от pfn връща true идват преди тези за които предиката връща false . Разделянето е постоянно . Това означава че съответното подреждане се запазва . Връща итератор към началото на елементите за които предиката е false .


stable_sort


void stable_sort ( RandIter start , RandIter end ) ;

void stable_sort ( RandIter start , RandIter end , Comp cmpfn );

Алгоритъма stable_sort ( ) подрежда интервала start – end . Сортирането е постоянно . Това означава че еднаквите елементи не се пренареждат . Втората форма ви позволява да определите сравнителна функция която определя кога един елемент е по – малък от друг .


swap


void swap ( T &i , T &j ) ;

Алгоритъма swap ( ) разменя стойностите отнасящи се за i и j .


swap_ranges


ForIter2 swap_ranges ( ForIter1 start1 , ForIter1 end1 ,

ForIter2 start2 ) ;

Алгоритъма swap_ranges ( ) разменя елементите в интервала определен от start1 и end1 със елементите в редицата започваща със start2 . Връща указател към края на редицата определена от start2 .


transform


OutIter transform ( InIter start , InIter end , OutIter result ,

Func unaryfunc ) ;

OutIter transform ( InIter1 start1 , InIter1 end1 , InIter2

start2 , OutIter result , Func binaryfunc ) ;

Алгоритъма transform ( ) прибавя функция към интервала от елементи и съхранява резултата във result . В първата форма интервала е определен от start и end . Функцията която ще бъде добавена е определена от unaryfunc . Тази функция получава стойност на елемент като нейн параметър и трябва да връща неговата трансформация . Във втората форма , трансформацията е добавена чрез използване на бинарна операторна функция която получава елемент от редицата и го преобразува във нейн първи параметър и елемент от втората редица за найн втори параметър . И двете версии връщат итератор за края на резултатната редица .


Програмен съвет


Един от най – интересните алгоритми е transform ( ) понеже той изменя всеки елемент в интервала съгласно предоставената функция . Например , следващата програма използва проста преобразуваща функция наречена xform ( ) да вдигне на квадрат съдържанието на списък . Забележете че резултатната редица се съхранява в същия списък който доставя първоначалната редица :

// пример за трансформиращ алгоритъм



# include < iostream >

#include < list >

#include < algorithm >

using namespace std ;

// проста преобразуваща функция

int xform ( int i ) {

return i * i ; // първоначалната стойност на квадрат

}



int main ( )

{

list < int > xl ;

int i ;

// слага стойности във списъка

for ( i = 0 ; i < 10 ; i ++ ) xl . push_back ( i ) ;

cout << “ Original contents of xl : “ ;

list < int > : : iterator p = xl . begin ( ) ;

while ( p != xl . end ( ) ) {

cout << *p << “ “ ;

p++ ;

}

cout << endl ;

// трансформира xl



p = transform ( xl . begin ( ) , xl . end ( ) , xl . begin ( ) ,

xform ) ;

cout << “ Transformed contents of xl : “ ;

p = xl . begin ( ) ;

while ( p != xl . end ( ) ) {

cout << *p << “ “ ;

p++ ;

}

return 0 ;

}

Изхода от тази програма е :



Original contents of xl : 0 1 2 3 4 5 6 7 8 9

Transformed contents of xl : 0 1 4 9 16 25 36 49 64 81

Както можете да видите всеки елемент в xl е бил повдигнат на квадрат .


unique и unique_copy


ForIter unique ( ForIter start , ForIter end ) ;

ForIter unique ( ForIter start , ForIter end , BinPred pfn ) ;

OutIter unique_copy ( ForIter start , ForIter end ,

OutIter result ) ;

OutIter unique_copy ( ForIter start , ForIter end ,

OutIter result , BinPred pfn ) ;

Алгоритъма unique ( ) елиминира дублиращите се елементи от определения интервал . Втората форма ви позволява да определите бинарен предикат който определя кога един елемент е равен на друг . unique ( ) връща итератор за края на интервала . Алгоритъма unique_copy ( ) копира интервала определен от start и end , елиминирайки дублиращите се елементи по време на процеса . Резултата е сложен във result . Втората форма ви позволява да определите бинарен предикат който определя кога един елемент е равен на друг . unique_copy ( ) връща итератор за края на интервала .


upper_bound


ForIter upper_bound ( ForIter start , ForIter end ,

const T &val ) ;

ForIter upper_bound ( ForIter start , ForIter end ,

const T &val , Comp cmpfn ) ;

Алгоритъма upper_bound ( ) открива последната точка в редицата определена от start и end която не е по – голяма от val . Връща итератор за тази точка . Втората форма ви позволява да определите сравнителна функция която определя кога един елемент е по – малък от друг .



Каталог: books
books -> Тайнствената сила на пирамидите Богомил Герасимов Страхът на времето
books -> В обятията на шамбала
books -> Книга се посвещава с благодарност на децата ми. Майка ми и жена ми ме научиха да бъда мъж
books -> Николай Слатински “Надеждата като лабиринт” София, Издателство “виденов & син”, 1993 год
books -> София, Издателство “Българска книжница”, 2004 год. Рецензенти доц д. ик н. Димитър Йончев, проф д-р Нина Дюлгерова Научен редактор проф д-р Петър Иванов
books -> Николай Слатински “Измерения на сигурността” София, Издателство “Парадигма”, 2000 год
books -> Книга 2 щастие и успех предисловие
books -> Превръщане на числа от една бройна система в друга
books -> Тантриското преобразяване


Сподели с приятели:
1   ...   11   12   13   14   15   16   17   18   19




©obuch.info 2024
отнасят до администрацията

    Начална страница