@ProCxx

Страница 2355 из 2477
Firstname
18.09.2018
07:23:49
Ну а теперь серьезный вопрос Разве auto не источник проблем?

Vladislav
18.09.2018
07:24:04
Там оно стояло Но чёт как то печально с ним Явное лучше чем не явное
это один из тех случаев когда неявное таки лучше

Firstname
18.09.2018
07:24:48
каких
При компиляции можно пропустить ошибку

Google
Firstname
18.09.2018
07:25:04
Auto уход к динамической типизации скорее

Евгений
18.09.2018
07:25:10
Firstname
18.09.2018
07:25:36
Ну выше ж Я с этим итератором знатно помучался

Пока понял, что там и как

Заметьте в h все auto

Viacheslav
18.09.2018
07:26:49
Firstname
18.09.2018
07:26:50
Там стояли delete но мб их не выгрузил

Vladislav
18.09.2018
07:27:23
Auto уход к динамической типизации скорее
где-то в гробу закрутился Милнер (а Хиндли вроде жив еще, поэтому не закрутился)

Firstname
18.09.2018
07:27:52
Ну поясните нубу плез

Google
Евгений
18.09.2018
07:28:34
Ну поясните нубу плез
Ну ты сначала расскажи что за ошибка была, мы не телепаты

Firstname
18.09.2018
07:29:41
auto a = new что-то A = new что то другое как пример

Мб даже не тут

Но я намечался с ними в insertall где итератор

Viacheslav
18.09.2018
07:36:12
Ну поясните нубу плез
Во-первых, динамически выделять контейнеры в тестах вообще смысла нет, внутри аллокатор этим занимается, а деструктор почистит, что полагается. Гуглить в сторону RAII.

Firstname
18.09.2018
07:48:18
Ну +- я знаю что это такое

По крайней мере в общем

Что значит динамический выделять контейнеры?

Viacheslav
18.09.2018
07:49:07
auto *test = new std::vector<int>(); писать не надо.

Насибуллин
18.09.2018
07:49:10
Выделять в динам. память

Александр
18.09.2018
07:49:44
Firstname
18.09.2018
07:49:55
Ну понятно что можно не юзать кучу

Но простите как дебажить память?

Без new

Александр
18.09.2018
07:50:31
Firstname
18.09.2018
07:51:06
А вот это лютый бред
Динамическим в смысле как в python когда мы ничего не знаем про переменную

Александр
18.09.2018
07:51:09
Но простите как дебажить память?
Память работает, не надо её дебажить

Firstname
18.09.2018
07:51:30
Если без new то да сама почиститься

Насибуллин
18.09.2018
07:51:31
Авто не скрывает от тебя тип

Всегда можно его вывести с помощью деклвал

Google
Александр
18.09.2018
07:51:51
Динамическим в смысле как в python когда мы ничего не знаем про переменную
В плюсах нет динамической типизации. auto имеет смысл "компилятор, определи тип статически, но за меня"

Firstname
18.09.2018
07:51:52
Авто не скрывает от тебя тип
Я думал он на этапе компиляции вычисляется

Насибуллин
18.09.2018
07:51:58
Или decltype

Александр
18.09.2018
07:52:15
Я думал он на этапе компиляции вычисляется
Так этап компиляции - это статика, а не динамика

Насибуллин
18.09.2018
07:52:24
Есть очень просто объяснение

Из мира мл

Firstname
18.09.2018
07:52:45
Не ну в плане, мы до компиляции не знаем что в auto подставят

Насибуллин
18.09.2018
07:52:47
Если типы присутствуют в программе то она типизированная

Если в рантайме - то бестиповая

Александр
18.09.2018
07:53:05
Насибуллин
18.09.2018
07:53:31
Именно типы присутствуют в программе , пусть и выводные в случае м авто

*с auto

Firstname
18.09.2018
07:53:52
Ну auto это синтаксический сахар для компилятора фактический

Насибуллин
18.09.2018
07:54:22
Нет, программист не всегда указывает такой же тип что и авто

Это не только сахар но еще и думалка за тебя

Firstname
18.09.2018
07:54:44
Память работает, не надо её дебажить
Вот тут такой вопрос А если мне прилетят объекты в структуру из кучи?

Александр
18.09.2018
07:55:15
Вот тут такой вопрос А если мне прилетят объекты в структуру из кучи?
И что? Объект твоего класса ничего не знает о том, где он выделен

И ему оно и не нужно

Евгений
18.09.2018
07:55:47
Нет, программист не всегда указывает такой же тип что и авто
ну с точностью до & * const всегда можно уточнить же

Firstname
18.09.2018
07:55:47
Ну если мне руками их удалять придется?

Google
Александр
18.09.2018
07:56:45
Ну если мне руками их удалять придется?
Если внутри объекта ты сделал new, то внутри объекта ты должен сделать delete. Нахождение самого объекта где-то в памяти не имеет значения

Стандартный вектор же работает и на куче, и в стеке прекрасно. А его внутренности почти всегда в куче

Насибуллин
18.09.2018
07:57:38
ну с точностью до & * const всегда можно уточнить же
Да, можно и с большей точностью :) auto f( ) -> ConcreteType

Firstname
18.09.2018
07:58:41
Насибуллин
18.09.2018
07:59:15
Он имеет в виду коллекции по моему

Под словом присоединил

Александр
18.09.2018
07:59:23
А я про деревья подумал

Firstname
18.09.2018
07:59:54
Евгений
18.09.2018
08:00:12
Если я внутри объекта сделал new такого же объекта и присоединил его к текущему зачем delete
короче, старайся делать так, чтобы объект, который выделил память сам за собой в деструкторе подтирал. Тогда тебе не придется париться как выделять сам объект

Firstname
18.09.2018
08:00:14
У меня древо в древе создаётся и присоединяется к текущему

Александр
18.09.2018
08:00:33
Думай о них, как о разных классах

Firstname
18.09.2018
08:00:44
Ммм подробнее

Что это такое?

Как я могу думать об одном классе

Если они одинаковые?

Александр
18.09.2018
08:01:24
Ну написал ты left = new T;, какая разница, T - такой же тип или другой? В деструкторе текущего типа в любом случае надо сделать delete left;

Firstname
18.09.2018
08:01:59
Не в плане я написал left = root Где root это новое древо

Которое я через new создал

Александр
18.09.2018
08:02:27
Ага. Тогда да, я тебя понял.

Google
Firstname
18.09.2018
08:02:29
То что ты написал есть

Александр
18.09.2018
08:02:55
Тогда ты создал извне, передал владение внутрь. Тогда нужно извне new, не спорю, но это плохая практика

Firstname
18.09.2018
08:03:29
Ну из вне не могу:( я не знаю что там происходит

Александр
18.09.2018
08:04:12
Я перестал понимать что-либо без кода

Firstname
18.09.2018
08:04:50
bool insertAll(iter begin, iter end) { //std::sort(begin, end, std::less<T>()); auto *tmp = new SimpleSearchTree<T>(); int b = 100; for (auto i = begin; i != end; i++) { tmp->insert(*i); if ((tmp->size != 0) && (tmp->size % b == 0)) { if (root == nullptr) { root = tmp->root; } else { Node<T> *const node = getParent(tmp->root->getElement(), root); if (node->getElement() > tmp->root->getElement()) { node->setLeft(tmp->root); tmp->root->setParent(node); } else { node->setRight(tmp->root); tmp->root->setParent(node); } } size += (tmp->size); tmp = new SimpleSearchTree<T>(); } } if (root == nullptr) { root = tmp->root; } else { if (tmp->size != 0) { Node<T> *const node = getParent(tmp->root->getElement(), root); if (node->getElement() > tmp->root->getElement()) { node->setLeft(tmp->root); tmp->root->setParent(node); } else { node->setRight(tmp->root); tmp->root->setParent(node); } } } size += (tmp->size); return true; }

Правда с телефона это невозможно читать

Firstname
18.09.2018
08:05:30
Можно, го?

Насибуллин
18.09.2018
08:06:16
У него insert(*t) с разыменованием. По моему это уже не поинтер

А что за канал supapro?

Firstname
18.09.2018
08:06:42
Insert по значению принимает

Kirill
18.09.2018
08:06:44
Крис
18.09.2018
08:06:44
А что за канал supapro?
Для новичков

Igor
18.09.2018
08:07:19
Insert по значению принимает
пускай принимает по конст-ссылке, или хотя бы мувает

Dmitry
18.09.2018
08:14:48
кто-нибудь использует в своей работе qt creator?

Igor
18.09.2018
08:15:36
Igor
18.09.2018
08:17:54
кто-нибудь использует в своей работе qt creator?
много кто, а поцчему вы таки спгашиваете?

Ilia
18.09.2018
08:19:47
кто-нибудь использует в своей работе qt creator?
СРАЗУ ВОПРОС! Если по Qt, то в @qt_chat

Страница 2355 из 2477