Jak się mają iteratory wewnątrz kontenerów do ogólnych typów iteratorów.
Ostatnio zmodyfikowano 2020-12-28 02:23
Ashey Temat założony przez niniejszego użytkownika |
Jak się mają iteratory wewnątrz kontenerów do ogólnych typów iteratorów. » 2020-12-27 19:23:28 Próbuję zrozumieć jak działają iteratory, z tego co wiem kontenery z STL (np. std::vector) definiują własną klasę zagnieżdżoną - iterator (np. std::vector::iterator) dla której definiują operacje jakie można na tych iteratorach wykonać. Z kolei funkcje szablonowe z STL przyjmują argumenty typu szablonowego (np. class InputIterator) i nie rozumiem dlaczego dla takiego std::vector::iterator podanego do funkcji można wywyływać metody. To tak, że typ podany za InputIterator musi spełniać jakieś ogólne warunki określone dla tego typu iteratora na którym pracuje funkcja? Pytam pod kątem pisania własnego kontenera, jak zrobić aby iterator takiego kontenera pasował do ogólnych funckji z STL'a. |
|
pekfos |
» 2020-12-27 20:52:00 To tak, że typ podany za InputIterator musi spełniać jakieś ogólne warunki określone dla tego typu iteratora na którym pracuje funkcja? Tak. |
|
Ashey Temat założony przez niniejszego użytkownika |
» 2020-12-27 23:17:21 Czyli te rodzaje iteratorów (wejściowe, postępujące itd.) określają ogólne zasady jakie musi spełniać iterator kontenera aby działać z funkcjami wymagającymi danego typu iteratora? |
|
DejaVu |
» 2020-12-28 00:33:24 Tak. Przykładowo: jeżeli wymagany jest random access operator do metody, to musisz mieć zaimplementowanych kilka operatorów (w tym operator[], operatory porównania, inkrementacji, dekrementacji, dodawania i odejmowania operatorów, dereferencji oraz mieć odpowiednie konstruktory). Szczegóły znajdziesz na stronie: http://www.cplusplus.com/reference/iterator/RandomAccessIterator/ |
|
Ashey Temat założony przez niniejszego użytkownika |
» 2020-12-28 02:23:26 Dzięki bardzo |
|
« 1 » |