Структуры данных в c#. Устройство самых распространенных структур данных

Поділитися
Вставка
  • Опубліковано 3 чер 2024
  • Продолжаем изучать алгоритмы, на этот раз поговорим об устройстве самых распространенных структурах данных. Как работает словарь, чем отличается стек от очереди и зачем нужен связный список.
    Ссылка на Discord - / discord
    Исходный код - github.com/gaitavr/Algorithms...
    Паблик игроделов - special3d
    "00:00 - Введение"
    "00:30 - Чем отличается массив от листа"
    "03:23 - Что такое связанный список"
    "05:25 - Что общего у строки и массива"
    "07:54 - Зачем нужен стек и очередь"
    "10:42 - Как работает словарь"
    Поддержка канала:
    Patreon - www.patreon.com/user?u=32502669
    В крипте:
    BTC - 16WmTb4VTFGYrwEjjnMKNNMMzsMB1rPEqD
    ETH - 0x8d35406f8317b846528d0a9ea4a34ce59968dff2
    XRP - rLW9gnQo7BQhU6igk5keqYnH3TVrCxGRzm (TAG - 1438215071)
    LTC- MNSWdzdVsUMnozSU5HhUPEscfxaUK3Fdck
    #unity3d #алгоритмы #геймдев #программирование #ityoutubersru

КОМЕНТАРІ • 66

  • @vladisslavss
    @vladisslavss 2 роки тому +1

    Круто! 🔥
    Радуюсь каждому видео!
    Лукас и коммент в поддержку автора канала!

  • @user-go7qv2yc6z
    @user-go7qv2yc6z 2 роки тому +11

    Максим, спасибо что делишься опытом и знаниями! Вроде фундаментальные вещи, а нюансов много.

    • @user-ih3xv6mx5p
      @user-ih3xv6mx5p Рік тому +1

      Да вообще, я никогда не указывал размер будущей коллекции, т.к. не знал, что память для них будет выделяться новая, а старая летит в GC

  • @IvanBilousov
    @IvanBilousov 2 роки тому +2

    Спасибо за новое Видео! Лучший канал в своем роде.

  • @maxmojet2900
    @maxmojet2900 2 роки тому +2

    Это очень сложно, но очень нужно. думаю нужно посмотреть несколько сот раз, что бы это усвоить. Спасибо Макс, ты лучше чем хауди.

  • @Alexander-ko1od
    @Alexander-ko1od 2 роки тому +1

    Очень крутое видео, спасибо, жду продолжения.

  • @mastervolodsobeck5176
    @mastervolodsobeck5176 2 роки тому +2

    Четко, коротко и крайне понятно... Сенкс.

  • @user-ry6em9xg8y
    @user-ry6em9xg8y 2 роки тому

    А это хорошая идея про подробный разбор типов значения и ссылочных.

  • @andrewmad
    @andrewmad 2 роки тому +2

    Достойный ролик. Тема ... данных раскрыта. )

  • @kirillsviderski4739
    @kirillsviderski4739 2 роки тому +11

    Какое эпичное окончание видео :) А так, очень рекомендую всем новичкам. Эти вещи это не "странные" хотелки на собеседовании, это то чем мы реально пользуемся при решении рабочих задач

    • @--.--
      @--.-- 2 роки тому

      Это все понятно, просто людей смущают эти вопросы при отборе на какой-нибудь гиперкеж проект, когда не то что код, да само качество игры страдает

    • @gaitavr1992
      @gaitavr1992  2 роки тому +1

      А что такое качество игры? Это бизнес, который приносит деньги, и чтобы наворачивать много фичей нужны знания глубже среднего так сказать

    • @kirillsviderski4739
      @kirillsviderski4739 2 роки тому

      @@--.-- архитектура призвана помогать работать, а не мешать. Когда разрабатывают гиперкеж - важно быстро получить результат. И очень гибко и быстро менять идеи. Без заложенных на подкорке привычек сделать это будет очень сложно. Да, там код не главное, но опыт любого практика показывает насколько тяжело потом бороться с неуместными костылями и плохой реализацией. П.с.: я хейтер гиперкежа, мне такое неинтересно

    • @shyxiaolong
      @shyxiaolong 2 роки тому

      @@gaitavr1992 а важно ли помнить их реализацию на память? скажем так достаточно ли будет объяснять на пальцах? ну принципы работы. или надо зазубривать именно все от а до я? в реальной практике всегда же можно открывать рефлектор и посмотреть под капот, или опять же погуглить

    • @user-ih3xv6mx5p
      @user-ih3xv6mx5p Рік тому

      @@shyxiaolong Я думаю об особенностях работы с памятью первое время надо просто принудительно застявлять себя соблюдать, а потом это будет происходить на автомате, в результате будет неважно будешь ли ты работать на гиперкеж или ААА проекте - тебе везде будет респект )

  • @AlexStraga
    @AlexStraga 2 роки тому +6

    Вот так узнаешь подкопотное листа и психологически сложнее становится использовать, хотя и понимаешь что чаще всего это не повлияет на скорость настолько критично. ) Спасибо, было полезно, но придется еще пересмотреть.
    Мне честно говоря пока не сильно пригодились словари, тут или не было подходящей задачи, либо надо получше разобратсья в теме чтобы понять где это бы пригодилось прям на 100%.

  • @denisbragin4264
    @denisbragin4264 Рік тому

    Это супер-видео! Максим молодец)

  • @trell_7842
    @trell_7842 2 роки тому +1

    В текущем проекте юзаю очередь, так как она мне показалась удобной при работе с паттерном команда.

  • @amni5tianone263
    @amni5tianone263 2 роки тому +1

    Спасибо, продолжайте, пожалуйста

  • @swar666
    @swar666 2 роки тому +1

    Познавательно, спасибо!

  • @EmanX140
    @EmanX140 2 роки тому +3

    Спасибо за детальное объяснение! Особенно про перемешивание списка и HashSet. Использовал Stack в последнем проекте для реализации Undo/Redo функционала.

  • @nimerovskyteam468
    @nimerovskyteam468 2 роки тому +1

    Как всегда топ!

  • @romashep3086
    @romashep3086 2 роки тому

    Спасибо! Лучшее объяснение по структурам данных!
    Не понимаю, зачем было реализовывать стек и очередь на основе массива, если есть односвязный список, где алгоритмическая сложность добавления и удаления была бы всегда O(1). А здесь мы сталкиваемся с необходимостью периодически перераспределять память при добавлении и удалении данных, а так же проверками размерности массива. Почему разрабы такой реализации отдали предпочтение?

  • @GaniSo
    @GaniSo 2 роки тому

    блин бро какой же ты классный.....

  • @Alina_Dev
    @Alina_Dev 9 місяців тому

    Спасибо!

  • @mkdir699
    @mkdir699 2 роки тому +1

    Хорошее видео

  • @nickr6196
    @nickr6196 2 роки тому +4

    Спсибо, интересно, но мне больше нравится использовать SortedList он упорядочен и реализован с помощью бинарного дерева, что на мой взгляд является оптимальным решением.
    А стек я использую для смены окон интерфейса, когда из одного открывается другое, то предыдущее прячется и ссылка помещается в стек. Такое решение конечно подойдет не везде, но для меня пока годится :)

    • @vatyunga
      @vatyunga 2 роки тому +1

      Помоему везде так и работает. Я в юнити примерно такое сделал, что лишь панель в топе стека отображается и принимает инпут.

  • @user-fd3nw3un7v
    @user-fd3nw3un7v 2 роки тому +1

    круто, я пока ничего кроме массива листа и словаря не использовал. Но очень удивительно было узнать что словарь быстрее листа и ваще супер крутой такой!

    • @gaitavr1992
      @gaitavr1992  2 роки тому +2

      Не совсем) Памяти он потребляет очень много

    • @AlexStraga
      @AlexStraga 2 роки тому +2

      @@gaitavr1992 Как там было? "Сколько выигрываешь в скорости, столько проигрываешь в памяти"?)

    • @gaitavr1992
      @gaitavr1992  2 роки тому

      Ага, всегда компромисс

  • @user-lu6zm8zv7x
    @user-lu6zm8zv7x 2 роки тому +3

    Максим, большое спасибо за такой качественный и полезный контент, очень хотелось бы увидеть видео об архитектуре игры в самом Юнити и продолжения темы паттернов. Если не секрет, то в каких студиях/компаниях ты работал? Какими проектами занимался?

    • @gaitavr1992
      @gaitavr1992  2 роки тому

      В линкедин меня можно найти, проекты там не все указаны, но есть компании, должности и обязанности

  • @brainwashing5576
    @brainwashing5576 2 роки тому +1

    Спасибо.
    Использовал словарь, лист, связный лист, и даже хэшсэт. Но стэк и очередь пока не приходилось.

  • @jarofed
    @jarofed 2 роки тому +1

    Использую очередь для реализации пула игровых объектов в Юнити (чтобы не приходилось каждый раз создавать часто используемые объекты типа пуль).

    • @gaitavr1992
      @gaitavr1992  2 роки тому

      Хорошее применение)

  • @xoorf
    @xoorf Рік тому

    Дякую за досвід

  • @Simba_the_cat
    @Simba_the_cat 2 роки тому +2

    Кто эти странные люди, кто ставит дизлайк 😅
    Максим, спасибо за полезные видео 🙏🏻

    • @gaitavr1992
      @gaitavr1992  2 роки тому +1

      Насколько я видел - у всех видосов на ютубе есть дизы, это нормально)

    • @Simba_the_cat
      @Simba_the_cat 2 роки тому

      @@gaitavr1992 от этого никуда не деться)

  • @hhhhhhhhhgfh
    @hhhhhhhhhgfh 2 роки тому +1

    Вопрос не по теме: оставил комментарий под этим роликом несколько дней назад. Потом, после того, как досмотрел видео, понял, что он был не совсем обоснованный и удалил его. Почему мне приходят уведомления, что на мой комментарий кто-то отвечает? Его же нет... Я даже перепроверил (благо, всего коментов 48 на данный момент) и всё равно не нашёл свой

  • @rKvinty
    @rKvinty 2 роки тому +1

    пж ответь откуда ты взял реализацию метода RemoveAt у листа? Как еë открыть?

    • @gaitavr1992
      @gaitavr1992  2 роки тому

      В ide есть декомпиляция

    • @rKvinty
      @rKvinty 2 роки тому

      @@gaitavr1992 Но где? Единственное что я могу это в visual studio нажать ctrl и клик по имени метода и получу public void RemoveAt(int index); 🙁

    • @gaitavr1992
      @gaitavr1992  2 роки тому

      Я райдером пользуюсь

  • @user-im3nw2oo2c
    @user-im3nw2oo2c 2 роки тому +2

    На собеседование к Максиму нужно готовиться основательно...

  • @TheTempterable
    @TheTempterable 2 роки тому +1

    Стоило проговорить, что стэк и очередь реализуются как списки, а не как массивы. И что взаимодействие с их элементами (peek и dequeue) имеет О(1). Так как не было сказано, реализуются они как массивы или как списки.

    • @gaitavr1992
      @gaitavr1992  2 роки тому

      Я показывал реализацию стека и очереди, оба с массивами внутри

  • @easycodeunity3d14
    @easycodeunity3d14 2 роки тому

    Почему под капотом стека обычный массив если стек все время меняется в длине а массив не лучшее решение для динамичности размера? Если в стек всегда добавляются и удаляются элементы только с одной стороны (вершины) то двусвязный список ведь подошел бы лучше?

    • @gaitavr1992
      @gaitavr1992  2 роки тому

      Там такой же принцип, как у листа. Удваивается capacity и все. Слишком часто это не должно происходить

  • @83partizan
    @83partizan Рік тому

    Не понимаю, зачем на 3:00 делается +i после рандома. Это же рандом, при следующей итерации может выпасть тоже самое (учитывая +i )

  • @behappianstudio3576
    @behappianstudio3576 2 роки тому +5

    Как-то невольно начинаю скучать по рефакторингу...

  • @vladislavyurevich2247
    @vladislavyurevich2247 2 роки тому +5

    Я один слышу воющего кота/ребёнка на 8:40???

    • @gaitavr1992
      @gaitavr1992  2 роки тому +1

      Вполне возможно, ребенок тогда шумел в соседней комнате

    • @vladislavyurevich2247
      @vladislavyurevich2247 2 роки тому +1

      @@gaitavr1992 Я уже подумал у меня шиза =) Спасибо за ролик, очень полезный материал. Ждём-с материал по графам и более сложные задачки)

  • @alexspeleers
    @alexspeleers 2 роки тому

    где сайфай джентуха на заднике?!

  • @tomasgammister5776
    @tomasgammister5776 2 роки тому +1

    Снова ничего не понял при такой подаче. Ты можешь как то спокойнее преподать мысли ? Или ты думаешь что все на твоём уровне ? Ты же учишь, а значит слушающие скорее всего менее опытны, чем ты. Можно же то же самое немного медленнее преподать ? Или тебя как коня не притормозить??
    Ты сам попробуй посмотреть свои видео представив себя учеником по С#. Ты бы вывез такой напор ?

    • @gaitavr1992
      @gaitavr1992  2 роки тому +2

      Почему-то большинство вывозит, может тебе еще рано?

    • @tomasgammister5776
      @tomasgammister5776 2 роки тому

      @@gaitavr1992 может и рано. Может и тебе подробнее и не спеша ? ))

    • @gaitavr1992
      @gaitavr1992  2 роки тому +4

      Сколько ролик будет длиться? 30-40 минут? Я рассчитываю на аудиторию с опытом. Для начинающих материала куча

    • @bobobobababa4960
      @bobobobababa4960 2 роки тому +1

      @@gaitavr1992 действительно, уже надоело пересматривать одни и те же уроки с пометкой "для начинающих", но от разных блогеров, хочется выходить хоть немного на новый уровень

    • @alexsklyarov6792
      @alexsklyarov6792 2 роки тому +1

      Я тоже временами не успеваю за мыслью, но это скорее от инфы которая не известна, перематываю (иногда и несколько раз), но это же запись, нет проблем посмотреть в любое время. А смотреть 30-40 минут как-то накладно.