mam jakąś funkcjęPrzechodząc iterator i grafika do funkcji
void print_elem(const std::vector<int>::iterator it, const std::vector<int> &vec) {/*.....*/}
Jeśli wyjadę, że wektor jest odwołanie do oryginalnego obiektu, mam kopie wektora. Dlaczego to samo dotyczy iteratora? Dlaczego iterator również nie musi być referencją?
Na przykład, jeśli chciałbym iterować w wektorze, wydrukować każdy element i chciałbym przestać, gdy uderzę w koniec wektora, chyba że przekażę odniesienie do wektora, iteracja tylko ciągle przechodzi przez pierwszą kopię wektorową. Ale jeśli przejdę przez referencję, iteracja przechodzi przez oryginalny obiekt wektorowy. Ale dlaczego iterator nie jest kopiowany tak jak wektor bez odniesienia?
Czy to nieistotne, aby przekazać iterator jako argument odniesienia? Warto pamiętać o przejściu przez iterator, ponieważ odwołanie do funkcji powoduje błąd; ale nie jest tak, gdy jest to const_iterator. Czy zdajesz sobie sprawę, dlaczego? Jaka jest różnica, która powoduje, że to ostatnie nie jest błędem? -Dzięki. – jlstr