S
Ein Zeiger geht erstmal gar nicht. (<-- Punkt)
Mit Zeigerarithmetik lässt sich der Indexoperator eines linearen Speicherbereichs ersetzen. Das ist richtig, Sicherheit und so weiter ist aber eine ganz andere Geschichte.
Iteratoren sind ein Konzept einheitlich über die Daten einer Datenstruktur zu traversieren, die Daten anzufordern und ggf. zu manipulieren. Dadurch ist eine Entkopplung von Algorithmen und Datenstrukturen möglich, die ohne diese einheitliche Schnittstelle nicht möglich wäre und Kohärenz unabhängiger Module extremst erhöht. Und das ist ja nicht gewollt.
qsort(void * base, size_t count, size_t size, int (*cmp)(const void*, const void*);
Ist der Standard-Quicksort aus C. Aber setzt da mal eine verkettete Liste ein oder einen Baum. (Verlangt wird hier, dass es den operator[] gibt oder man per Pointerarithmetik arbeiten kann)
Nimmst du aber Iteratoren, gibst vor, dass diese 2-3 Operationen können müssen, dann hast du schon viel Unabhängigkeit
std::sort(Iter first, Iter last, CmpFunc cmp);
// wobei das zu
std::sort(Iter first, Iter last, bool (*cmp)(Foo a, Foo b));
// wird
So in etwa...
Aber das erklären einschlägige Bücher oder Online-Artikel weit besser als ich... (GoF)