@egorggegor

Как вернуть значение итератора из функции?

Всем привет!

Есть следующая функция:
template <class Node>
Node* getLeftNeighbor(std::multiset<Node> ms ,typename std::multiset<Node>::iterator it) {
    auto leftElement = it--;
    if (leftElement < ms.begin()) {
        return nullptr;
    }
    return leftElement;
}


Она возвращает левый элемент относительно итератора, который был подан в функцию. Как я могу передать значение этого итератора? Сейчас пишет ошибку о несоответствии типов "No viable conversion from returned value of type".

Спасибо за ответы.
  • Вопрос задан
  • 223 просмотра
Пригласить эксперта
Ответы на вопрос 1
Adamos
@Adamos
Ну, все правильно. Вы же хотите возвращать не итератор, а указатель. Вот тип и не совпадает.
Можно вернуть &(*leftElement);, но если вас угораздит обратиться по этому указателю после того, как с сетом что-нибудь произошло (например, добавлен или удален элемент), вас могут ожидать разные нетривиальные, трудно отлавливаемые сюрпризы.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы