[Solira] C++ e librerie STL

Salvatore Sittinieri sittisal a gmail.com
Dom 6 Apr 2008 13:40:56 CEST


Il giorno 06/apr/08, alle ore 13:03, EnneBi ha scritto:

> Mi sono ritrovato un programmino scritto un po' di tempo fa e volevo
> trovare una soluzione piu' elegante a quella utilizzata ma non capisco
> il problema (forse era questo che allora mi ha spinto alla "soluzione"
> adotta).
>
> Mi spiego. Il problema puo' tradursi cosi:
>
> c'e' un vettore v1, per esempio di int e voglio selezionare, per
> esempio, gli elementi > 10 e metterli in v3. Allora definisco
>
> int prova(int& va){

prende il puntatore ad un vettore...

>   if(va>10) return va;

vede se l'elemento e' maggiore di 10 e ritorna l'intero...

>   else return 0;
> };
> ....
> transform(v1.begin(),v1.end(),v3.begin(),prova);

Perche' non passo niente alla funzione prova se vuole come parametro  
un vettore?

> Fin qui tutto Ok. Il problema si pone se voglio parametrizzare il
> valore, invece di usare sempre 10.
> Io provo a definire una funzione binaria:
>
> int prova2(int& va, int vb){

se provi a dichiarare int vb2; vb2=vb; printf("vb=vb2: %d",vb2); cosa  
stampa?

>   if(va>vb) return va;
>   else return 0;
> };
> ....
> transform(v1.begin(),v1.end(),v3.begin(),bind2nd(prova2(),10));

il tipo del primo parametro di bind2nd e' compatibile con int?

>
> ma mi da, nella riga di definizione della funzione:
> error: too few arguments to function prova3(int&, int)
>

Non vedo prova3...

Sa magari posti il sorgente intero provo a compilare e vedo di capirci  
qualcosa di piu'...



Maggiori informazioni sulla lista Solira