Iteratorleistung

Führt das Implementieren und Verwenden eines Iterators im Vergleich zum direkten Verwenden eines Zeigers zu Performance-Einbußen jeglicher Art?

(Angenommen, wir verwenden die höchste Compileroptimierung ...)

Der Code ist vonhttp: //www.cplusplus.com/reference/iterator/iterator

// std::iterator example
#include <iostream>     // std::cout
#include <iterator>     // std::iterator, std::input_iterator_tag

class MyIterator : public std::iterator<std::input_iterator_tag, int>
{
  int* p;
public:
  MyIterator(int* x) :p(x) {}
  MyIterator(const MyIterator& mit) : p(mit.p) {}
  MyIterator& operator++() {++p;return *this;}
  MyIterator operator++(int) {MyIterator tmp(*this); operator++(); return tmp;}
  bool operator==(const MyIterator& rhs) {return p==rhs.p;}
  bool operator!=(const MyIterator& rhs) {return p!=rhs.p;}
  int& operator*() {return *p;}
};

int main () {
  int numbers[]={10,20,30,40,50};
  MyIterator from(numbers);
  MyIterator until(numbers+5);
  for (MyIterator it=from; it!=until; it++)
    std::cout << *it << ' ';
  std::cout << '\n';

  return 0;
}

gcc godbolt für Iterator

gcc godbolt für rohen Zeiger

Antworten auf die Frage(4)

Ihre Antwort auf die Frage