Как итераторы работают со списком в C ++?

Это путаница, которую я имею о том, как итераторы работают со списком в C ++. Пожалуйста, поправьте меня, если я ошибаюсь.

Список (в C ++) под капотом — это двойной связанный список. Мы знаем структуру двусвязного списка — область данных и указатель на следующий и предыдущий узлы. Таким образом, каждый узел в двусвязном списке имеет адрес в памяти. Когда мы объявляем итератор в списке, он указывает на этот адрес. Итак, когда мы разыменовываем итератор, как получается, что мы получаем только значение данных?

3

Решение

Оператор разыменования итератора просто определен, чтобы возвращать (ссылку на) значение, содержащееся в узле. Например, это можно определить так:

template<T>
T& list<T>::iterator::operator *() {
return this->node_pointer->value;
}
10

Другие решения

Поскольку итератор перегружен оператор *, так что он возвращает ссылку на значение а не узел.

6

По вопросам рекламы [email protected]