Возвращает указатель на объект, на который указывает iter, используя `& * iter` - PullRequest
1 голос
/ 19 октября 2011

У меня есть итератор, и я хочу вернуть указатель на элемент, на который он указывает.

Это нормально делать?

return &*iter;

Это не очень хорошая идея.

1 Ответ

2 голосов
/ 19 октября 2011

Это прекрасно.Но имейте в виду, что если итератор имеет контейнер, который освобождает и перераспределяет память при изменении размера, то указатель возвращенный станет недействительным.Например, если итератор является итератором std::vector, то iter и &*iter оба становятся недействительными, если базовый вектор изменяет размеры.

Кстати, название темы и то, что высказано в самой первой строке, не совпадают:

Возврат указателя от итера с использованием &*iter (title)

У меня есть итератор иЯ хочу вернуть элемент, на который он указывает. (первая строка)

Оба они означают разные.То, что вы написали, то есть return &*iter, это то, что вы сказали в названии.Но второе утверждение означает следующее:

return *iter;

Возвращает элемент, синтаксически которого указывает итератор *1026*.Он не возвращает указатель на элемент.Это безопасно, даже если вектор изменяет свой размер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...