Obiecte Funcți

Previzualizare curs:

Extras din curs:

Obiecte functii (functori).

Într-o expresie, apelul unei functii este înlocuit prin rezultatul întors de functie. Misiunea functiei poate fi preluata de catre un obiect. În acest scop se supraîncarca operatorul apel de functie sub forma function operator()().

Obiectele apartinând claselor care au supraîncarcat operatorul apel de functie sunt obiecte functii sau functori.

STL prevede o serie de clase generice pentru comparatii. Clasele comparatii sunt functii binare derivate din clasa binary_function:

template <class arg1, class arg2, class rez>

struct binary_function{

typedef arg1 first_argument_type;

typedef arg2 second_argument_type;

typedef rez result_type;

};

Pentru clase unare se defineste sablonul unary_function. Exemplu:

template <class T>

struct equal_to : binary_function(T, T, bool){

bool operator()(const T& x, const T& y) const {

return x==y;

}

};

În acest mod sunt definiti functorii: equal_to<T>, not_equal<T>, greater<T>, less<T>, greater_equal(), less_equal() care asigura algoritmilor o interfata uniforma.

Astfel pentru a sorta un tablou cu functia de comparatie mai mic în valoare absoluta, vom defini:

#include <iostream>

#include <functional> // less<T>

#include <cstdlib> // abs()

struct absLess{

bool operator()(int x, int y)const{

return abs(x) < abs(y);

};

};

STL asigura, de asemenea, prin supraîncarcarea operatorului apel de functie, clase pentru operatiile aritmetice si logice. Aceste sunt: plus<T>, minus<T>, multiplies<T>, divides<T>, modulus<T>, negate<T>, logical_and<T>, logical_or<T>.

Afisati parametrii liniei de comanda, sortati în ordine invers-lexicografica.

#include <iostream>

#include <functional>

#include <string>

#include <algorithm>

using namespace std;

void main(int ac, char** av){

sort(av, av+ac, greater_equal<string>());

for(int i=0; i<ac; i++)

cout << av[i] << ” ”;

cout << endl;

}

Download gratuit

Documentul este oferit gratuit,
trebuie doar să te autentifici in contul tău.

Structură de fișiere:
  • Obiecte functii.doc
Alte informații:
Tipuri fișiere:
doc
Nota:
8/10 (2 voturi)
Nr fișiere:
1 fisier
Pagini (total):
2 pagini
Imagini extrase:
2 imagini
Nr cuvinte:
493 cuvinte
Nr caractere:
2 754 caractere
Marime:
5.51KB (arhivat)
Publicat de:
NNT 1 P.
Nivel studiu:
Facultate
Tip document:
Curs
Domeniu:
Calculatoare
Predat:
la facultate
Materie:
Calculatoare
Sus!