PDA

Visualizza la versione completa : [C++] Vettori e funzioni, errore: no match for "operetor=="


Vespid93
29-04-2012, 15:30
Ciao ragazzi! stavo provando a ricercare un elemento in vettore, ma mi segnala errore nella riga con il commento e mi dice:

in function void ricerca(std::vector<int, std::allocator<int> >*, int):
no match for 'operetor==' in '((+(((unsigned int)i) *12u))+ list) == ricerca'

il codice questo:


#include <iostream>
#include <vector>

using namespace std;
void ricerca(vector<int> list[10],int ricerca);

int main(){


}

void ricerca(vector<int> list[10],int ricerca)
{
bool trovato = false;
int pos = -1;
for (int i = 0; i < 10; i++)
{
if (list[i] == ricerca)//ERRORE
{
trovato = true;
pos = i;
break;
}
}
if (trovato) cout<<"Il numero e' stato trovato alla posizione: "<<pos<<endl;
else cout<<"Il numero non e' stato trovato."<<endl;

}

void rimuovi(vector<int> list[10], int ricerca){


}

shodan
29-04-2012, 15:35
Stai passando un array di vector, non un singolo vector, e ogni elemento dell'array restituisce un vector<int> non un int.

Vespid93
29-04-2012, 17:49
ah ok quindi per definire un signolo vettore devo togliere [10] sostanzialmente giusto? ora ne sto definendo 10..

shodan
29-04-2012, 18:22
Si. Dopo di che nelle funzioni puoi usarlo anche per saperne la dimensione.
Tra l'altro, visto che non ne modifichi il contenuto, meglio passarlo per const reference


void ricerca(const vector<int>& list,int ricerca)
{
bool trovato = false;
int pos = -1;

std::size_t sz = list.size(); // dimensione del vector
for (int i = 0; i < sz; i++)

{
if (list[i] == ricerca)//ERRORE
{
trovato = true;
pos = i;
break;
}
}
if (trovato) cout<<"Il numero e' stato trovato alla posizione: "<<pos<<endl;
else cout<<"Il numero non e' stato trovato."<<endl;

}

Loading