Ostatnio bawiłem się z prostymi kontenerami własnej roboty, ale chciałbym zapewnić zgodność z standardowymi algorytmami z <algorithm> które jako argument przyjmują iteratory, no właśnie, iteratory, tu mam problem i jednym słowem nie wiem jak to ugryźć, stworzyć własną klase iteratora, czy może użyć tych już istniejących, świetnie było by jeśli zna ktoś jakieś materiały o iteratorach ( po angielsku, polsku)
Dołączam się do pytania.
Mam podobny problem, ale od drugiej strony, tzn chcę naklepać algorytm sortowania działający zarówno na tablicach jak i kolekcjach działających na tablicach, czyli vector, deque, itd
@Wibowit: zarówno vector
jak i deque
mają operator []
więc działaj jak na zwykłych tablicach. W czym problem?
No to jak wyglądałby bubblesort działający na tablicach i vectorach jednocześnie? Tak jak std::sort.
Chodzi mi o to, by nie pisać oddzielnie funkcji dla każdego typu kolekcji/ tablicy.
Napisz wlasna implementacje, jesli Twoja kolekcja nie jest tylko wrapperem na standardowa kolekcje.
@Wibowit
Hmm... a co jest nie tak z podejsciem
template <class RandomAccessIterator, class Comparator>
mojeSortowanko(RandomAccessIterator first, RandomAccessIterator last, Comparator comparator)
Gdzie RandomAccessIterator
poza standardowym interfejsem udostepnia tez operator []
?
OK, w sumie zapomniałem że w C++ templaty są tylko prymitywnymi generatorami kodu, rozbudowanymi #define'ami :P
Myślałem, że powinny być jakieś standardowe interfejsy. Javowe zboczenie :P
które jako argument przyjmują iteratory, no właśnie, iteratory, tu mam problem i jednym słowem nie wiem jak to ugryźć, stworzyć własną klase iteratora, czy może użyć tych już istniejących
Iteratorem może być w najprostszym przypadku zwykły wskaźnik na element - sprawdzi się to np. w przypadku vector
a.