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

Поделиться
HTML-код
  • Опубликовано: 4 янв 2025

Комментарии • 67

  • @ИгорьМорозов-ы2ы
    @ИгорьМорозов-ы2ы 3 года назад +14

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

    • @АлексейБуров-т7ц
      @АлексейБуров-т7ц Год назад +1

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

  • @maxmojet2900
    @maxmojet2900 3 года назад +4

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

  • @kirillsviderski4739
    @kirillsviderski4739 3 года назад +11

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

    • @eloreneloreneloreneloreneloren
      @eloreneloreneloreneloreneloren 3 года назад

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

    • @gaitavr1992
      @gaitavr1992  3 года назад +2

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

    • @kirillsviderski4739
      @kirillsviderski4739 3 года назад

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

    • @shyxiaolong
      @shyxiaolong 3 года назад +1

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

    • @АлексейБуров-т7ц
      @АлексейБуров-т7ц Год назад

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

  • @vladisslavss
    @vladisslavss 3 года назад +1

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

  • @mastervolodsobeck5176
    @mastervolodsobeck5176 3 года назад +2

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

  • @trell_7842
    @trell_7842 3 года назад +1

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

  • @IvanBilousov
    @IvanBilousov 3 года назад +2

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

  • @AlexStraga
    @AlexStraga 3 года назад +8

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

  • @andrewmad
    @andrewmad 3 года назад +2

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

  • @Alexander-ko1od
    @Alexander-ko1od 3 года назад +1

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

  • @МаксКузнец-п1б
    @МаксКузнец-п1б 3 года назад +2

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

    • @gaitavr1992
      @gaitavr1992  3 года назад +2

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

    • @AlexStraga
      @AlexStraga 3 года назад +2

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

    • @gaitavr1992
      @gaitavr1992  3 года назад

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

  • @АлексХрапин
    @АлексХрапин 3 года назад

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

  • @amni5tianone263
    @amni5tianone263 3 года назад +1

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

  • @denisbragin4264
    @denisbragin4264 2 года назад

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

  • @nickr6196
    @nickr6196 3 года назад +3

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

  • @swar666
    @swar666 3 года назад +1

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

  • @nimerovskyteam468
    @nimerovskyteam468 3 года назад +1

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

  • @GaniSo
    @GaniSo 3 года назад

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

  • @profuter
    @profuter 2 месяца назад

    на 10:26 не совсем понял. Разве мы не должны подбрасывать во второй стек только после его опустошения когда хотим извлечь очередной элемент?
    стеки пишу от верха ложим 1, 2,3
    первый стек 321 --- второй пусто
    команда извлечь => перекинули получили
    пусто --- 123 и отдали 1
    пусто -- 23
    снова ложим 4 потом 5
    54 -- 23
    извлечь - не копируем отдаем просто 2, только если опустел должны скопировать
    иначе получим
    пусто --- 5423 и отдадим 5

  • @Alina_Dev
    @Alina_Dev Год назад

    Спасибо!

  • @romashep3086
    @romashep3086 2 года назад

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

  • @EmanX140
    @EmanX140 3 года назад +3

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

  • @mkdir699
    @mkdir699 3 года назад +1

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

  • @xoorf
    @xoorf 2 года назад

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

  • @brainwashing5576
    @brainwashing5576 3 года назад +1

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

    • @gaitavr1992
      @gaitavr1992  3 года назад

      Интересный опыт

  • @jarofed
    @jarofed 3 года назад +1

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

    • @gaitavr1992
      @gaitavr1992  3 года назад

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

  • @ПризракКиева-ж8с
    @ПризракКиева-ж8с 3 года назад +3

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

    • @gaitavr1992
      @gaitavr1992  3 года назад

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

  • @Simba_the_cat
    @Simba_the_cat 3 года назад +2

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

    • @gaitavr1992
      @gaitavr1992  3 года назад +1

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

    • @Simba_the_cat
      @Simba_the_cat 3 года назад

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

  • @83partizan
    @83partizan 2 года назад

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

    • @profuter
      @profuter 2 месяца назад

      чтобы не обрабатывать первые i элементов, которые уже были обработаны

  • @hhhhhhhhhgfh
    @hhhhhhhhhgfh 3 года назад +1

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

  • @rKvinty
    @rKvinty 3 года назад +1

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

    • @gaitavr1992
      @gaitavr1992  3 года назад

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

    • @rKvinty
      @rKvinty 3 года назад

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

    • @gaitavr1992
      @gaitavr1992  3 года назад

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

  • @easycodeunity3d14
    @easycodeunity3d14 3 года назад

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

    • @gaitavr1992
      @gaitavr1992  3 года назад

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

  • @TheTempterable
    @TheTempterable 3 года назад +1

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

    • @gaitavr1992
      @gaitavr1992  3 года назад

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

  • @alexspeleers
    @alexspeleers 3 года назад

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

  • @behappianstudio3576
    @behappianstudio3576 3 года назад +5

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

  • @ДмитрийПодлепич
    @ДмитрийПодлепич 3 года назад +2

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

  • @vladislavyurevich2247
    @vladislavyurevich2247 3 года назад +5

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

    • @gaitavr1992
      @gaitavr1992  3 года назад +1

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

    • @vladislavyurevich2247
      @vladislavyurevich2247 3 года назад +1

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

  • @tomasgammister5776
    @tomasgammister5776 3 года назад +1

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

    • @gaitavr1992
      @gaitavr1992  3 года назад +2

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

    • @tomasgammister5776
      @tomasgammister5776 3 года назад

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

    • @gaitavr1992
      @gaitavr1992  3 года назад +4

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

    • @bobobobababa4960
      @bobobobababa4960 3 года назад +1

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

    • @alexsklyarov6792
      @alexsklyarov6792 3 года назад +1

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