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

2024 ж. 2 Мам.
21 901 Рет қаралды

Продолжаем изучать алгоритмы, на этот раз поговорим об устройстве самых распространенных структурах данных. Как работает словарь, чем отличается стек от очереди и зачем нужен связный список.
Ссылка на Discord - / discord
Исходный код - github.com/gaitavr/Algorithms...
Паблик игроделов - vk.com/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

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

    @user-go7qv2yc6z@user-go7qv2yc6z2 жыл бұрын
    • Да вообще, я никогда не указывал размер будущей коллекции, т.к. не знал, что память для них будет выделяться новая, а старая летит в GC

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

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

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

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

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

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

      @user-ih3xv6mx5p@user-ih3xv6mx5p Жыл бұрын
  • Спасибо!

    @Alina_Dev@Alina_Dev8 ай бұрын
  • Круто! 🔥 Радуюсь каждому видео! Лукас и коммент в поддержку автора канала!

    @vladisslavss@vladisslavss2 жыл бұрын
  • Очень крутое видео, спасибо, жду продолжения.

    @Alexander-ko1od@Alexander-ko1od2 жыл бұрын
  • Спасибо за новое Видео! Лучший канал в своем роде.

    @IvanBilousov@IvanBilousov2 жыл бұрын
  • Четко, коротко и крайне понятно... Сенкс.

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

    @maxmojet2900@maxmojet29002 жыл бұрын
  • Достойный ролик. Тема ... данных раскрыта. )

    @andrewmad@andrewmad2 жыл бұрын
  • Это супер-видео! Максим молодец)

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

    @user-ry6em9xg8y@user-ry6em9xg8y2 жыл бұрын
  • Спасибо, продолжайте, пожалуйста

    @amni5tianone263@amni5tianone2632 жыл бұрын
  • Познавательно, спасибо!

    @swar666@swar6662 жыл бұрын
  • Как всегда топ!

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

    @AlexStraga@AlexStraga2 жыл бұрын
  • В текущем проекте юзаю очередь, так как она мне показалась удобной при работе с паттерном команда.

    @trell_7842@trell_78422 жыл бұрын
  • Хорошее видео

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

    @EmanX140@EmanX1402 жыл бұрын
  • блин бро какой же ты классный.....

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

    @user-fd3nw3un7v@user-fd3nw3un7v2 жыл бұрын
    • Не совсем) Памяти он потребляет очень много

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

      @AlexStraga@AlexStraga2 жыл бұрын
    • Ага, всегда компромисс

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

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

    @user-lu6zm8zv7x@user-lu6zm8zv7x2 жыл бұрын
    • В линкедин меня можно найти, проекты там не все указаны, но есть компании, должности и обязанности

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

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

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

    @brainwashing5576@brainwashing55762 жыл бұрын
    • Интересный опыт

      @gaitavr1992@gaitavr19922 жыл бұрын
  • Дякую за досвід

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

    @jarofed@jarofed2 жыл бұрын
    • Хорошее применение)

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

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

      @gaitavr1992@gaitavr19922 жыл бұрын
    • @@gaitavr1992 от этого никуда не деться)

      @Simba_the_cat@Simba_the_cat2 жыл бұрын
  • Как-то невольно начинаю скучать по рефакторингу...

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

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

    @hhhhhhhhhgfh@hhhhhhhhhgfh2 жыл бұрын
  • пж ответь откуда ты взял реализацию метода RemoveAt у листа? Как еë открыть?

    @rKvinty@rKvinty2 жыл бұрын
    • В ide есть декомпиляция

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

      @rKvinty@rKvinty2 жыл бұрын
    • Я райдером пользуюсь

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

    @TheTempterable@TheTempterable2 жыл бұрын
    • Я показывал реализацию стека и очереди, оба с массивами внутри

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

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

      @gaitavr1992@gaitavr19922 жыл бұрын
  • На собеседование к Максиму нужно готовиться основательно...

    @user-im3nw2oo2c@user-im3nw2oo2c2 жыл бұрын
  • Я один слышу воющего кота/ребёнка на 8:40???

    @vladislavyurevich2247@vladislavyurevich22472 жыл бұрын
    • Вполне возможно, ребенок тогда шумел в соседней комнате

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

      @vladislavyurevich2247@vladislavyurevich22472 жыл бұрын
  • где сайфай джентуха на заднике?!

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

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

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

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

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

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

      @alexsklyarov6792@alexsklyarov67922 жыл бұрын
KZhead