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

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

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

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

02.11.2013, 17:08. Просмотров 343. Ответов 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;
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.11.2013, 17:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Что вернуть по ссылке, если объект функцией поиска не найден? (C++):

Что возвращать из vector-a указателей, если объект не найден? - C++
Все добра! Подскажите что возвращать если элемент не найден ? class A { public: A(int val) { a = val; } int a; };

как вернуть объект из ф-и, если, возможно, объекта не существует? - C++
Пример: TTo4ka TForm1::GetPoint(const short &amp;X,const short &amp;Y) { short Nom = p_MassivTo4ek; if (Nom&gt;0) //значит есть точка ...

Можно ли вернуть функцией два значения при условии что она будет вещественного типа? - C++
Вот само задание...уже пол часа думаю есть ли такая возможность или я что то не так понимаю.Написать программу с реализацией в виде вызова...

Линейный и бинарный поиск: что возвращает функция, если ключ не найден? - C++
Есть функция линейного поиска int linesearch(int *V, int n, int b) { int i; for(i = 0; i &lt; b; i++) cout &lt;&lt; V &lt;&lt; &quot;...

Что можно возвратить из функции если нужный объект не создан - C++
Добрый день! Есть функции, которые возвращают указатели на двумерные массивы, но заполнение и создание массива происходит после...

Как связывается целевой объект с функцией-обработчиком, если использовать модель событий W3C DOM уровня 2? - JavaScript
Привет. 1. Если я пишу function func(){...}; document.getElementById(&quot;red&quot;).onclick=func; , то свойство onclick станет ссылаться не...

4
0x10
2465 / 1637 / 241
Регистрация: 24.11.2012
Сообщений: 4,040
02.11.2013, 17:10 #2
Самое простое и ожидаемое - возвращать не ссылку на объект, а итератор.
0
rpsv
15 / 46 / 3
Регистрация: 14.10.2013
Сообщений: 161
02.11.2013, 17:13 #3
sashadereh, а почему бы и не 0 или nullptr и возвращать? По моему так все структуры STL делают.
0
castaway
Эксперт С++
4884 / 3019 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
02.11.2013, 17:13 #4
Можно возвращать не ссылку, а указатель. Если элемент не найден возвращать nullptr.
0
Jupiter
Каратель
Эксперт С++
6556 / 3977 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
02.11.2013, 17:31 #5
+ варианты:
можно бросить исключение.
можно вернуть какой-нибудь std::optional
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.11.2013, 17:31
Привет! Вот еще темы с ответами:

В случае если процесс не найден сделать что то - C++ WinAPI
#include &lt;TlHelp32.h&gt; using namespace std; bool main() { const TCHAR* procname = &quot;skaner.exe&quot;; HANDLE hSnap =...

Как выполнить код если процесс найден (if) или не найден (else) - C#
вот пример! using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using...

Как сделать так,что если этот файл не найден,то программа закрывалась выводя сообщение - Delphi
Вообще-м ,программа работает с текстовым файлом и соответственно ее нужно кидать в папку с этим текстовым файлом. Если ее не кинуть и...

MVC. что делать с функцией если она используется на нескольких страницах? - PHP ООП
не совсем понимаю объясните в MVC у каждой страницы есть файлы вид, модель, контроллер. предположим есть три страницы(все функции работают...


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

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
02.11.2013, 17:31
Ответ Создать тему
Опции темы

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