Witam, mam funkcję, która sprawdza czy element jest na liście. Wygląda ona tak:
bool Picture::isInList(list<SDL_Color> ListOfColors, SDL_Color color) {
for(list<SDL_Color>::iterator it = ListOfColors.begin(); it != ListOfColors.end(); it++)
{
if(((*it).r == color.r) && ((*it).b == color.b) && ((*it).g == color.g)) {
return true;
}
}
return false;
}
Przy takim kodzie wszystko działa poprawnie. Aż się prosi żeby tę listę przekazywać przez referencję (dodatkowo oznaczając jako const), kolor tak samo.
bool Picture::isInList(const list<SDL_Color>& ListOfColors, const SDL_Color& color) {
for(list<SDL_Color>::const_iterator it = ListOfColors.begin(); it != ListOfColors.end(); it++)
{
if(((*it).r == color.r) && ((*it).b == color.b) && ((*it).g == color.g)) {
return true;
}
}
return false;
}
Wszystko byłoby ok gdyby nie to, że przy taki zapisie dostaję całkiem inne wyniki niż w przypadku pierwszym.
Czy mógłby mi ktoś podpowiedzieć dlaczego te wyniki się różnią skoro analizuję ten sam obraz, a różnica jest tylko w argumentach? Dodam, że dla pierwszego kodu funkcja działa poprawnie.