2009-06-11 6 views
0

Que dois-je remplacer exactement ??? avec pour obtenir l'itérateur (it) à un élément (par exemple Base(2))?Aide avec std :: find

J'ai essayé quelques coups mais rien, le compilateur dit juste que c'est faux.

Voici le code

#include <cstdlib> 
#include <iostream> 
#include <vector> 
using namespace std; 

class Base 
{ 
    public: 
    Base(int a) {ina = a;} 
    ~Base() {} 
    int Display() {return ina;} 

    int ina; 
}; 

int main(int argc, char *argv[]) 
{ 
    vector<Base> myvector; 

    for(int i=0 ; i<10 ; i++) 
    { 
    myvector.push_back(Base(i)); 
    } 

    vector<Base>::iterator it; 

    it = find(myvector.begin(), myvector.end(), ???); 

    system("PAUSE"); 
    return EXIT_SUCCESS; 
} 

Merci à l'avance!

+0

Lorsque vous recevez des messages d'erreur, publiez-les! – Dario

+0

Se sent comme des devoirs pour moi. –

Répondre

5

Le troisième paramètre est juste la valeur que vous recherchez.

it = find(myvector.begin(), myvector.end(), Base(2)); 

Le problème est maintenant que le compilateur doit savoir si deux éléments sont égaux. Ainsi, vous aurez à mettre en œuvre un opérateur pour l'égalité contrôle (écrire ce code entre main et votre définition de classe):

// a equals b if a.ina equals b.ina 
bool operator == (const Base& a, const Base& b) { 
    return a.ina == b.ina; 
} 

Si vous voulez juste pour obtenir le n-ième élément de myvector, vous pouvez aussi simplement écrire myvector.begin() + n .

+0

Merci !!! c'est ce que je cherchais –

+0

J'essayais avec Base (2) mais sans implémentation de bool operator.C'était le catch. Encore merci. –

2

Vous pouvez simplement faire myvector.begin() + n pour obtenir un itérateur au nième élément de myvector.

+0

Avec "nième élément" signifiant "l'élément à l'index n" (juste pour clarifier). – sth