PDA

View Full Version : Reference di vector


bianchis78
05-06-2007, 15:50
Salve,

ho implementato un metodo per effettuare il merge tra due vettori eleminando eventuali copie dello stesso valore.

Posto che i vettori sono ordinati in modo ascendente, avevo scritto una cosa del genere:



vector<int> MergeVector(vector<int> Vec1, vector<int> Vec2)
{
vector<int> Result;
vector<int>::iterator IterVec1=Vec1.begin();
vector<int>::iterator IterVec2=Vec2.begin();
while((IterVec1!=Vec1.end())&(IterVec2!=Vec2.end()))
{
if((*IterVec1)==(*IterVec2))
{
Result.push_back(*IterVec2);
IterVec2++;
IterVec1++;
}
else
{
if((*IterVec1)<(*IterVec2))
{
Result.push_back(*IterVec1);
IterVec1++;
}
else//((*IterVec1)<(*IterVec2))
{
Result.push_back(*IterVec2);
IterVec2++;
}
}
}

while(IterVec1<Vec1.end())
{
Result.push_back(*IterVec1);
IterVec1++;
}

while(IterVec2<Vec2.end())
{
Result.push_back(*IterVec2);
IterVec2++;
}
return Result;
}



Visto che questo metodo viene richiamato pių volte volevo provare a parrase come parametri i riferimenti ai vettori e non i vettori stessi, pertanto ho cambiato la firma del metodo cosė:


vector<int> MergeVector(vector<int> &Vec1, vector<int> &Vec2)


e lasciando invariata l'implementazione, ovviamente ho cambiato la firma anche nel file degli header.

Il Problema č che mi viene restituito un unresolved external symbol?

Qualcuno ha qualche suggerimento da darmi sulla possibile causa di questo errore?

cionci
06-06-2007, 10:42
Mi sembra che ci sia un errore:
while((IterVec1!=Vec1.end())&(IterVec2!=Vec2.end()))
deve essere:

while((IterVec1!=Vec1.end())&&(IterVec2!=Vec2.end()))

A parte questo...puoi incollare la dicitura completa dell'errore ? Mi sembra strano che dipenda solo da quello.

bianchis78
06-06-2007, 17:41
Era il compilatore che ha iniziato a dare i numeri...

Ho fatto il rebuild della soluzione e l'errore č sparito....

mah....:rolleyes: