Ich verstehe, wie Random-Access-Iteratoren für zusammenhängende Container wie Std :: Vector arbeiten: der Iterator verwaltet einfach einen Zeiger auf das aktuelle Element und alle Additionen/Subtraktionen werden auf den Zeiger angewendet. Ich bin jedoch verblüfft darüber, wie ähnliche Funktionalität für einen nicht zusammenhängenden Container implementiert werden könnte. Meine erste Vermutung für, wie std :: deque: Iterator funktioniert ist, dass es einen Zeiger auf eine Tabelle der Gruppen von zusammenhängenden Speicher verwaltet, die es enthält, aber ich bin mir nicht sicher.Wie werden Direktzugriffs-Iteratoren für nicht zusammenhängende Container (z. B. std :: deque) implementiert?
Wie würde eine typische Standardbibliothek dies implementieren?
Wer sagt, dass ein 'Deque' nicht zusammenhängend ist? Es wird normalerweise als dynamisches Array implementiert. – ooga
@ooga von [hier] (http://en.cppreference.com/w/cpp/container/deque) 'Im Gegensatz zu std :: vector werden die Elemente einer Deque nicht zusammenhängend gespeichert: typische Implementierungen verwenden eine Sequenz von individuell zugewiesenen Arrays fester Größe. –
@ooga, Wie würde es dann von einem Vektor abweichen? – chris