Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
sashadereh
3 / 3 / 1
Регистрация: 30.09.2012
Сообщений: 63
#1

Что вернуть по ссылке, если объект функцией поиска не найден? - C++

02.11.2013, 17:08. Просмотров 312. Ответов 4
Метки нет (Все метки)

Здравствуйте всем!
Имеется проблема: приведенная ниже функция ищет элемент (объект класса TreeNode) в бинарном дереве (объект класса Tree). Если находит - возвращает ссылку на него. Но что вернуть, если такой объект не нашелся?

P.S. Булевой функцию сделать не вариант, возвращать указатель на объект - тоже.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
template < typename T >
TreeNode< T > &Tree< T >::findElement(TreeNode< T > *node, const T &value) const
{
    if  (node == nullptr)
    {
        return /*Что?*/ ;
    }
    else
    {
        if  (value < node->key)
            findElement(node->left, value);
        else
        {
            if  (value > node->key)
                findElement(node->right, value);
            else  
                return *node;
        }
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.11.2013, 17:08     Что вернуть по ссылке, если объект функцией поиска не найден?
Посмотрите здесь:

C++ как вернуть объект из ф-и, если, возможно, объекта не существует?
Как вернуть результат функции по ссылке? C++
C++ Как проверить по ссылке, создан ли объект?
Линейный и бинарный поиск: что возвращает функция, если ключ не найден? C++
Можно ли вернуть функцией два значения при условии что она будет вещественного типа? C++
C++ Как вернуть ссылку на объект?
По ссылке на функцию получить тип возвращаемого этой функцией значения C++
C++ Объект не передается по ссылке
Что можно возвратить из функции если нужный объект не создан C++
Динамическое выделение памяти внутри функции (что вернуть из функции, если не удалось выделить память?) C++
C++ Что возвращать из vector-a указателей, если объект не найден?
Вернуть ошибку функцией int C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2451 / 1623 / 238
Регистрация: 24.11.2012
Сообщений: 3,993
02.11.2013, 17:10     Что вернуть по ссылке, если объект функцией поиска не найден? #2
Самое простое и ожидаемое - возвращать не ссылку на объект, а итератор.
rpsv
15 / 46 / 3
Регистрация: 14.10.2013
Сообщений: 161
02.11.2013, 17:13     Что вернуть по ссылке, если объект функцией поиска не найден? #3
sashadereh, а почему бы и не 0 или nullptr и возвращать? По моему так все структуры STL делают.
castaway
Эксперт С++
4870 / 3009 / 370
Регистрация: 10.11.2010
Сообщений: 11,059
Записей в блоге: 10
Завершенные тесты: 1
02.11.2013, 17:13     Что вернуть по ссылке, если объект функцией поиска не найден? #4
Можно возвращать не ссылку, а указатель. Если элемент не найден возвращать nullptr.
Jupiter
Каратель
Эксперт C++
6548 / 3968 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
02.11.2013, 17:31     Что вернуть по ссылке, если объект функцией поиска не найден? #5
+ варианты:
можно бросить исключение.
можно вернуть какой-нибудь std::optional
Yandex
Объявления
02.11.2013, 17:31     Что вернуть по ссылке, если объект функцией поиска не найден?
Ответ Создать тему
Опции темы

Текущее время: 06:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru