@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".

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

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

Похожие вопросы