Algoritmi

Trimis la data: 2008-09-27
Materia: Automatica
Nivel: Facultate
Pagini: 13
Nota: 10.00 / 10
Downloads: 6
Autor: Andrada
Dimensiune: 20kb
Voturi: 1
Tipul fisierelor: doc
Acorda si tu o nota acestui curs:
Curs despre Algoritmi
Algoritmii acopera un domeniu larg de operatii generale asupra containerelor precum: traversare, sortare, cautare, inserare sau stergere de elemente. Algoritmii sunt functii generice, care se refera la containere prin intermediul iteratorilor. Tipurile iteratorilor folositi de un algoritm sunt date ca parametri ai sablonului. Algoritmii sunt declarati in zona de nume std si semnaturile lor se afla in fisierul antet algorithm. Cei mai multi algoritmi sunt scurti si simpli, putand fi definiti inline. Algoritmii care produc rezultate pe care le depun intr-un container sunt clasificati ca algoritmi de copiere si au numele terminat cu sufixul _copy.
Curs despre Algoritmi
Algoritmii a caror functionare este determinata de satisfacerea unui predicat sunt cunoscuti ca algoritmi cu predicate. Lista de parametri a unui asemenea algoritm va contine un obiect functie predicat. Numele acestor algoritmi contine sufixul _if.

In prezentarea algoritmilor vom utiliza urmatoarele abrevieri:
InIt - InputIterator, OutIt - OutputIterator, FwIt - ForwardIterator,
BIt - BidirectionalIterator, RAIt - RandomAccessIterator, Pred - Predicate,
BinPred - BinaryPredicate, OpUnar - UnaryOperator, Func - Function, T - value_type (tipul elementelor din container)
Algoritmi care nu modifica secventa.

Se folosesc pentru a extrage informatii din secventa sau a gasi pozitia unor elemente din secventa.
1. for_each() elimina un ciclu explicit, repetand o operatie f asupra elementelor dintr-un interval de iteratori. Se foloseste pentru extragerea de informatii asupra elementelor secventei.

template
Op for_each(InIt prim, InIt ultim, Func f){
while(prim!=ultim)
f(*prim++);
return f;
}

2. cautarea unei valori -familia find
find() cauta in secventa prima valoare egala cu un parametru. Intoarce un iterator la prima valoare gasita.

template InIt find(InIt prim, InIt ultim, const T& val);

find_if() cauta in secventa prima valoare care satisface un predicat.
template InIt find_if(InIt prim, InIt ultim, Pred p);

find_first_of()gaseste primul element din secventa 1 care se afla in secventa 2, sau gaseste primul element din secventa 1 care se satisface predicatul cu un element din secventa 2.

template
FwIt1 find_first_of(FwIt1 pr1, FwIt1 ult1, FwIt2 pr2, FwIt2 ult2);
template
FwIt1 find_first_of(FwIt1 pr1, FwIt1 ult1, FwIt2 pr2, FwIt2 ult2, BinPred p);

adjacent_find()gaseste prima pereche de elemente vecine egale / sau care satisfac predicatul binar.

template FwIt adjacent_find(FwIt prim, FwIt ultim);
template FwIt adjacent_find(FwIt prim, FwIt ultim, BinPred p);

3 contorizarea aparitiei unei valori
count() numara valorile din intervalul de iteratori egale cu valoarea data ca parametru. Numarul de elemente nu depaseste distanta intre iteratori.

template
size_t count(InIt prim,InIt ultim, const T& val);

count_if()numara valorile din intervalul de iteratori care satisfac predicatul.

template
size_t count_if(InIt prim, InIt ultim, Pred p);

4. - compararea a doua secvente
equal() intoarce true/false daca cele doua secvente sunt egale sau daca toate perechile satisfac predicatul

template
bool equal(InIt1 prim1, InIt1 ultim1, InIt2 prim2);
template
bool equal(InIt1 prim1, InIt1 ultim1, InIt2 prim2, BinPred p);

mismatch()intoarce iteratori la prima pereche de elemente neegale, respectiv perechea care nu satisface predicatul din cele doua secvente.

template
pair mismatch(InIt1 prim1, InIt1 ultim1, InIt2 prim2);
template
pair mismatch(InIt1 prim1, InIt1 ultim1, InIt2 prim2, BinPred p);

5 cautarea unei secvente
search() - determina prima aparitie a secventei2 ca subsecventa a secventei1, respectiv prima aparitie a secventei2 ca subsecventa in secventa1 cu elemente aflate in relatia data cu elementele din secventa2. Intoarce un iterator la primul element din prima secventa egalata cu secventa2.

template
FwIt1 search(FwIt1 prim1,FwIt1 ultim1,FwIt2 prim2,FwIt2 ultim2);
template
FwIt1 search(FwIt1 prim1,FwIt1 ultim1,FwIt2 prim2,FwIt2 ultim2,BinPred p);

find_end() determina ultima aparitie a secventei2 ca subsecventa a secventei1. Intoarce un iterator la primul element din ultima secventa egalata cu secventa2.

template
FwIt1 find_end(FwIt1 prim1,FwIt1 ultim1,FwIt2 prim2,FwIt2 ultim2);
template
FwIt1 find_end(FwIt1 prim1,FwIt1 ultim1,FwIt2 prim2,FwIt2 ultim2,BinPred p);
Home | Termeni si conditii | Politica de confidentialitate | Cookies | Help (F.A.Q.) | Contact | Publicitate
Toate imaginile, textele sau alte materiale prezentate pe site sunt proprietatea referat.ro fiind interzisa reproducerea integrala sau partiala a continutului acestui site pe alte siteuri sau in orice alta forma fara acordul scris al referat.ro. Va rugam sa consultati Termenii si conditiile de utilizare a site-ului. Informati-va despre Politica de confidentialitate. Daca aveti intrebari sau sugestii care pot ajuta la dezvoltarea site-ului va rugam sa ne scrieti la adresa webmaster@referat.ro.