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

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

Восстановить пароль Регистрация
 
sashadereh
3 / 3 / 1
Регистрация: 30.09.2012
Сообщений: 63
02.11.2013, 17:08     Что вернуть по ссылке, если объект функцией поиска не найден? #1
Здравствуйте всем!
Имеется проблема: приведенная ниже функция ищет элемент (объект класса 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;
        }
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
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
Эксперт С++
4837 / 2976 / 367
Регистрация: 10.11.2010
Сообщений: 11,008
Записей в блоге: 10
Завершенные тесты: 1
02.11.2013, 17:13     Что вернуть по ссылке, если объект функцией поиска не найден? #4
Можно возвращать не ссылку, а указатель. Если элемент не найден возвращать nullptr.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
02.11.2013, 17:31     Что вернуть по ссылке, если объект функцией поиска не найден? #5
+ варианты:
можно бросить исключение.
можно вернуть какой-нибудь std::optional
Yandex
Объявления
02.11.2013, 17:31     Что вернуть по ссылке, если объект функцией поиска не найден?
Ответ Создать тему
Опции темы

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