Полезно!А ещё,возможно вы знали, чтобы не копировать какую либо строчку(ибо много телодвижений),можно просто поставить курсор на ней либо же выделить кусок кода и нажать ctrl+ d
создание объекта типа set: set имя древа; Добавить элемент: Добавить в set можно только УНИКАЛЬНЫЕ значения: set имя древа = { , , , , , }; mySet.insert(значение) - добавляет элемент в древо. Если элемент успешно добавлен в коллекцию, возвращается пара: итератор на тот элемент который мы передали + булевая переменная(в данном случае она будет true). Если элемент существует в коллекции, то первое значение будет итератор указывающий на этот элемент В КОЛЛЕКЦИИ, второй: булевая переменная (false в этом случае); Перебрать все элементы древа: for (auto &item : имя нашего древа) { cout
@@IXEmHy666 не надо извиняться. Я просто отметил, что было бы удобно, если бы кто-нибудь (не конкретно Вы) под другими видео делали такие записи. Я до ООП конспектировал уроки, но в тетрадку. А теперь как и всем лень
Спасибо за коммент. Не мог понять почему mySet.find() != mySet.end() означает наличие объекта в коллекции. Отвлёкся на секунду и пропустил важную инфу)
Одни из лучших уроков по плюсам! ) очень удачный формат уроков. Спасибо вам огромное за ваш труд! Буду надеяться что тематику c++ вы раскроете как можно шире )
Спасибо большое за такой большой курс по С++ Я его даже на всякий случай полностью скачал!!) Ещё раз огромное спасибо! P.S. а графические приложения скоро будут?
Это вам надо углубится в теорию бинарного дерева. После удаления элемента, вся ветка дочерних элементов перестраивается. Никакой новый сет не создаётся. Все элементы дерева - ноды, которые хранят ссылку на ноду-родитлея и максимум две ноды-дочери (тут уж как повезёт). Всё что происходит дальше - переписывание ссылок. Надеюсь понятно
Автор молодец. Но теперь ведь надо эти все 150 уроков применить практически? Или как? Чё то я совсем уже теорию забывать стал. Давайте практиковаться ежедневно! Автор жду обещанных игр и практические уроки программирования по С++.
Сортироваться будут исходя из того, что даст оператор > либо < при сравнении двух строк: Допустим, ("testone" > "testtwo") вернет 0, так как код ASCII буквы 'o' меньше, чем буквы 't' (другими словами, строки сравниваются до первого "неравного" символа) И так же как с целыми числами, будет сортироваться и set с строками
минимум - 1 (если все 10 раз (остаток от деления от 0 до 9) выпало бы одно и то же число, вероятность такого 10 (количество чисел(0-9)) * 1 / (10^10), итого 1 к 10^9)
Возращает то число которое ты ему дал и больше него и того 2 числа как я понял того типа даных какого у тебя бинарное дерево хотя ты уже я думаю это давно проверил
не слушай лукавых, не нужен нам пока что до-диез) А насчёт этого... Корнем этих классов становится число, которое было добавлено самым первым, так ведь? Т.е, у нас может первым числом добавиться значение -999999999999, а потом будут добавляться лишь значения больше, тогда у нас вся левая ветка древа будет пуста? Логично, что да. Есть ли у этих классов функции для сортировки дерева? Ну, или, мб в дальнейшем будут какие-то пояснения по этой теме?
я не совсем это имел ввиду... Явно, что если корнем дерева будет число, максимально близкое к среднему арифметическому этого дерева, то поиск будет быстрее, чем, если к примеру, корнем будет число 1, и числа 2,3,4...100 будут рассортированы в правой ветке. Так, чтобы найти число 51, придётся сделать 50 шагов. А если имеются те же числа, но корнем дерева будет число 50, то для нахождения числа 51 придётся сделать всего лишь 1 шаг...
Как-бы всё правильно, но есть одно но: когда мы делаем выбор в пользу того или иного контейнера, то мы хоть как-то представляем себе каким образом туда будуть попадать данные и если мы предполагаем, что элементы будут записываться всегда или почти всегда по возрастанию, то бинарное дерево может быть и не лучшим выбором. Тут всё зависит от задач. Бинарный поиск один из самых быстрых, а в описаной вами ситуации поиск по-умолчанию будет одинаково доглим для любого контейнера
Просто генератор случайных чисел не выдал число, которое при делении на 10 давало бы в остатке 3. Если бы в цикле было больше итераций, заданное число с большей вероятностью могло бы появиться.
*Cамый лучший способ сказать "спасибо" - поставить лайк и и поделиться уроком с друзьями. Это очень мотивирует создавать полезные уроки =)*
Полезно!А ещё,возможно вы знали, чтобы не копировать какую либо строчку(ибо много телодвижений),можно просто поставить курсор на ней либо же выделить кусок кода и нажать ctrl+ d
Кайф, спасибо за совет 😄
создание объекта типа set:
set имя древа;
Добавить элемент:
Добавить в set можно только УНИКАЛЬНЫЕ значения:
set имя древа = { , , , , , };
mySet.insert(значение) - добавляет элемент в древо. Если элемент успешно добавлен в коллекцию, возвращается пара: итератор на тот элемент который мы передали + булевая переменная(в данном случае она будет true).
Если элемент существует в коллекции, то первое значение будет итератор указывающий на этот элемент В КОЛЛЕКЦИИ, второй: булевая переменная (false в этом случае);
Перебрать все элементы древа:
for (auto &item : имя нашего древа)
{
cout
Был бы под каждым видео такой конспектик. Спасибо большое)
@@bonusanima если честно, для себя писал... Извини(
@@IXEmHy666 не надо извиняться. Я просто отметил, что было бы удобно, если бы кто-нибудь (не конкретно Вы) под другими видео делали такие записи. Я до ООП конспектировал уроки, но в тетрадку. А теперь как и всем лень
Я нашёл твой акк ехууу
Спасибо за коммент. Не мог понять почему mySet.find() != mySet.end() означает наличие объекта в коллекции. Отвлёкся на секунду и пропустил важную инфу)
Если необходимо вывести значения функции "equal_range()" - это можно сделать так:
multiset myMultiSet = {0,1,5,1,7,19,16};
auto it = myMultiSet.equal_range(1);
auto it1 = it.first;
auto it2 = it.second;
cout
#set #multiset #SimpleCode #урокипрограммирования
Одни из лучших уроков по плюсам! ) очень удачный формат уроков. Спасибо вам огромное за ваш труд! Буду надеяться что тематику c++ вы раскроете как можно шире )
Все круто, хотелось бы увидеть еще принцип работы multiseta-a , как расположены одинаковые значения
Спасибо Сергей за то время что тратите на нас!
Самое то для просмотра на скорости 2x. Спасибо)
Вовремя зашел на ютуб.Спасибо!
Спасибо!
Спасибо за урок.
Спасибо за урок!
То же задание было на экзамене по языкам программирования. Очень легкое
Спасибо за видео.
Отличный урок!
Спасибо.
Спасибо за урок
Спасибо огромное, помогаешь, продолжай в том же духе!
Спасибо большое за такой большой курс по С++
Я его даже на всякий случай полностью скачал!!)
Ещё раз огромное спасибо!
P.S. а графические приложения скоро будут?
Да*лбаеб.
для тех умников которые говорят, что у автора много воды, этой "водой" он объясняет дополнительные функции и фичи.
спасибо большое за урок!!!
ех глюкануло названице
думал на конец то шарп подъехал )
Спасибо
Офигеть, дак вот где деревья реализуются в структуре
Не понятно каким образом удаляется элемент из set. Получается как и с массивом создается новый set , но уже без элемента, указанного в set.erase() ?
Это вам надо углубится в теорию бинарного дерева. После удаления элемента, вся ветка дочерних элементов перестраивается. Никакой новый сет не создаётся. Все элементы дерева - ноды, которые хранят ссылку на ноду-родитлея и максимум две ноды-дочери (тут уж как повезёт). Всё что происходит дальше - переписывание ссылок. Надеюсь понятно
Продолжайте С++
спасибо
спасибо)
вы топ ! на этом мои полномочия все :)
А про typedef уроков-то и не было :)
thnks
Автор молодец. Но теперь ведь надо эти все 150 уроков применить практически? Или как? Чё то я совсем уже теорию забывать стал. Давайте практиковаться ежедневно! Автор жду обещанных игр и практические уроки программирования по С++.
23:37 а какой тип данных на строке 25? Возвращается два элемента значит это пара? а если бы вернулось больше элементов?
То, что метод удаления есть - это я понял. А как происходит перераспределение потомков, удалённого родителя?)) PS. Спасибо за уроки!
а что насчет типа данных стринг как будет вести себя контейнер сет ? как будет упорядочить стринги?
Сортироваться будут исходя из того, что даст оператор > либо < при сравнении двух строк:
Допустим, ("testone" > "testtwo") вернет 0, так как код ASCII буквы 'o' меньше, чем буквы 't' (другими словами, строки сравниваются до первого "неравного" символа)
И так же как с целыми числами, будет сортироваться и set с строками
Советую на скорости 2х
Ни одного дизлайка!)
могу исправить)
@@ЧеченскийУголок и зачем?
@@stepanbazrov6330 шучу я))))лайк влепил давно
Спасибо за урок! Такой вопрос, при заполнении set с помощью rand()%10 у нас могло получиться так, что уникальных элементов было бы на 10, а 5?
могло
минимум - 1 (если все 10 раз (остаток от деления от 0 до 9) выпало бы одно и то же число, вероятность такого 10 (количество чисел(0-9)) * 1 / (10^10), итого 1 к 10^9)
Для multiset дерево нарисовать бы
за два года ни одного дизлайка... Ты че творишь?
если вдруг кто увидит - что значит .equal_range () возвращает диапазон значений? что за диапазон, к какому типу данных его можно присвоить?
Возращает то число которое ты ему дал и больше него и того 2 числа как я понял того типа даных какого у тебя бинарное дерево хотя ты уже я думаю это давно проверил
@@ИгроманРоман-н2ш лол, наверное проще сказать что оно возвращает пару объектов класса iterator (пару итераторов)
Как выглядит мультисет?
Я не уверен, но по-моему это не просто бинарное дерево, а декартово. То есть совмещение кучи и бинарного дерева.
Кто нибудь сможет помочь или подсказать, как лучше всего вывести на экран бинарное дерево , как дерево! с отображением по уровням
@who cares Спасибо
не слушай лукавых, не нужен нам пока что до-диез) А насчёт этого... Корнем этих классов становится число, которое было добавлено самым первым, так ведь? Т.е, у нас может первым числом добавиться значение -999999999999, а потом будут добавляться лишь значения больше, тогда у нас вся левая ветка древа будет пуста? Логично, что да. Есть ли у этих классов функции для сортировки дерева? Ну, или, мб в дальнейшем будут какие-то пояснения по этой теме?
Что значит функции сортировки дерева? Дерево уже отсортировано и иначе быть не может.
я не совсем это имел ввиду... Явно, что если корнем дерева будет число, максимально близкое к среднему арифметическому этого дерева, то поиск будет быстрее, чем, если к примеру, корнем будет число 1, и числа 2,3,4...100 будут рассортированы в правой ветке. Так, чтобы найти число 51, придётся сделать 50 шагов. А если имеются те же числа, но корнем дерева будет число 50, то для нахождения числа 51 придётся сделать всего лишь 1 шаг...
Как-бы всё правильно, но есть одно но: когда мы делаем выбор в пользу того или иного контейнера, то мы хоть как-то представляем себе каким образом туда будуть попадать данные и если мы предполагаем, что элементы будут записываться всегда или почти всегда по возрастанию, то бинарное дерево может быть и не лучшим выбором. Тут всё зависит от задач. Бинарный поиск один из самых быстрых, а в описаной вами ситуации поиск по-умолчанию будет одинаково доглим для любого контейнера
ок, спасибо :)
мм, тебе спасибо куда больше ;)
Здравствуйте,сделел всё как указано на видео(ввод и вывдо) и получается бесконечный цикл...
Подскажите что делать?
Если еще не решил эту проблему, то скинь код. Я, возможно, пойму в чем ошибка
Такой вопрос, на 9:44 почему set обошёл число 3?
Просто генератор случайных чисел не выдал число, которое при делении на 10 давало бы в остатке 3. Если бы в цикле было больше итераций, заданное число с большей вероятностью могло бы появиться.
100% лайков
Что здесь выполняет амперсанд перед итем?
берёт адрес каждого элемента из mySet и выводит, не копируя их в себя
А как удалить элемент, зная его номер?
Начнём ли мы учить С#
+
Как в set организован упорядоченный вывод?
Это конечно все интересно но давай уже C# )
Нет, продолжайте C++
Как вы это только постигли?
Кому то проще по книгам или текстам, а книг = море...
Спасибо!
спасибо
Спасибо!!!
спасибо
спасибо