Итераторы STL | Библиотека стандартных шаблонов (stl) | Уроки | C++ | #2

Поделиться
HTML-код
  • Опубликовано: 27 ноя 2024
  • Cамый лучший способ сказать "спасибо" - поставить лайк и и поделиться уроком с друзьями. Это очень мотивирует создавать полезные уроки =)
    Арифметика указателей. Указатели и массивы. Массив это указатель. C++ для начинающих. Урок #47
    goo.gl/uP9Aez
    Умные указатели. Smart pointers. Изучение С++ для начинающих. Урок #130
    goo.gl/yAh6Br
    Наследование в ООП пример. Что такое наследование. Для чего нужно наследование классов. ООП. C++ #98
    goo.gl/xgR75E
    ✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅
    Если вам нравятся мои уроки, вы хотите поддержать меня и развитие канала, то можете сделать это тут!=)
    🔴🔴🔴 www.donationale...
    или тут
    🔴🔴🔴 / simplecode
    ✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅
    Уроки по программированию
    Наша группа ВК smplcode
    Подписывайтесь на канал / @simplecodeit

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

  • @SimpleCodeIT
    @SimpleCodeIT  6 лет назад +65

    *Cамый лучший способ сказать "спасибо" - поставить лайк и и поделиться уроком с друзьями. Это очень мотивирует создавать полезные уроки =)*

  • @HerrHoldem
    @HerrHoldem 6 лет назад +183

    Этот канал просто золотая находка для любого, кто изучает программирование.
    Крутые, подробные и понятные объяснения.
    Не понимаю, почему у некоторых посредственных ютуберов, которые обучают программированию, невероятно большая аудитория, а этого канала так мало - несправедливо

    • @SimpleCodeIT
      @SimpleCodeIT  6 лет назад +17

      Благодарю за поддержку!

  • @sashatim8244
    @sashatim8244 6 лет назад +43

    Недавно наткнулся на канал, подписался после 2 урока.
    Такого полезного контента по C++ я ещё не встречал.
    Автору огромное Спасибо!

  • @andrewbistroff7558
    @andrewbistroff7558 6 лет назад +87

    Спасибо Сергей продолжайте в том же духе ваши уроки на вес золота 🥇.

    • @SimpleCodeIT
      @SimpleCodeIT  6 лет назад +2

      Пожалуйста!

    • @andrewbistroff7558
      @andrewbistroff7558 6 лет назад +7

      Не торопитесь пожалуйста переходить на c# а доучите нас до конца то есть что вы запланировали на c++ (хотелось бы и затронуть оконные приложения на c++ так же подробно)

    • @overdoses1794
      @overdoses1794 6 лет назад +2

      Обычно их не на с++ делают, а на си шарп. Но тоже хотелось бы глянуть гайд=)

    • @dartware8539
      @dartware8539 6 лет назад

      А зачем вообще их совмещать? .NET вполне себе самодостаточная платформа.

  • @vvgromo
    @vvgromo 6 лет назад +29

    Огромное спасибо за уроки! Отличная подача материала.
    Заметил, что в плейлисте "Основы C++. Программирование для начинающих" этот урок стоит после урока по списку и после урока по ключевому слову auto, где уже активно упоминаются итераторы.

  • @extense1337
    @extense1337 4 года назад +7

    Спасибо, лучший канал по С++ и по программированию в целом!!

  • @IvanBaksheev
    @IvanBaksheev 3 года назад +14

    Огромное спасибо за Ваш труд! Благодаря вашему каналу смог начать изучать С++ самостоятельно и спустя некоторое время даже нашёл работу)

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

      только С++ достаточно бьіло?

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

      @@dentuso8 я при университете работаю, поэтому не требуется огромных знаний, хватило С++

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

      @@IvanBaksheev Хотелось бы узнать, не сложно ли учиться и работать одновременно?

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

      @@cnota69 вполне терпимо, если грамотно планировать время)

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

    Урок отличный! Продолжайте, это замечательно когда есть такие уроки.

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

    STL уроки очень интересные , сразу чуствую , другой уровень уже :)!!!

  • @digitalturkistan1857
    @digitalturkistan1857 6 лет назад +72

    наверно самый масштабный видеоуроки по с++ не с++ за час

    • @KK-gg8sk
      @KK-gg8sk 5 лет назад +6

      гоша дударь аКа Всезнающий в шоке, ТАК МОЖНО ЧТО ЛИ БЫЛО???))

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

      @@KK-gg8sk Ахахахах))))

  • @vladalu9794
    @vladalu9794 6 лет назад +5

    спасибо Сергей за отличный урок, очень интересно, при просмотре не возможно остановиться))

  • @segars9604
    @segars9604 10 месяцев назад +1

    Спасибо за бесценный труд!)

  • @evgeniygazetdinov1620
    @evgeniygazetdinov1620 6 лет назад +1

    Самое понятное объяснение которое я нашел,спасибо лайк ставлю подписываюсь однозначно!

  • @АлександрВасильев-в1е

    Хорошо раскрыта тема, спасибо!

  • @alexdubinskiy7390
    @alexdubinskiy7390 5 лет назад +6

    Спасибо Вам большое! Все доступно и понятно!)))

  • @pavelios3577
    @pavelios3577 6 лет назад +1

    Спасибо за урок, уважаемый Сергей.

  • @АлександрАдамсон-д7г

    Спасибо большое, доступно и понятно, хорошо объясняете есть последовательность в объяснении

  • @sleepyNovember_project
    @sleepyNovember_project 9 месяцев назад

    Это очень полезная тема для того чтобы работать со строками (string) на максималках

  • @sldev14
    @sldev14 4 года назад +2

    Отличные уроки... Спасибо!

  • @MISSTIK2007
    @MISSTIK2007 5 лет назад +2

    Спасибо. Очень крутые уроки, изучаю с удовольствием!

  • @SimpleCodeIT
    @SimpleCodeIT  6 лет назад +7

    #итераторы #STL #SimpleCode #урокипрограммирования

    • @CaytoCatugawa
      @CaytoCatugawa 5 лет назад

      Зачем нужны итераторы, если есть указатели и арифметика указателей ?

  • @KurpatovInstagram
    @KurpatovInstagram 6 лет назад +2

    Спасибо!

  • @Vlad_Ofitserov
    @Vlad_Ofitserov Год назад +3

    Щиро дякую!

  • @akrabato
    @akrabato 5 лет назад +1

    Спасибо! Отличные уроки!

  • @digitalturkistan1857
    @digitalturkistan1857 6 лет назад +23

    спасибо брат очень бесценные уроки

  • @Ermine882
    @Ermine882 6 лет назад +4

    Спасибо за урок.

  • @NoNo-fl6oq
    @NoNo-fl6oq 2 года назад

    великолепный урок! благодарю! лайк

  • @Ланс-м1в
    @Ланс-м1в 6 лет назад

    Спасибо за урок. Теперь понял, что при доступе к элементам контейнера через цикл for в его описании за ключевым словом auto скрывается объявление итератора. На других каналах этому внимания не уделяется, а для новичков такие вещи как раз важны.

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

    Хорош!! Давай-давай вперёд! Контент в кайф! Можно ещё? Вообще красавчик!!

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

    Отличные видео!

  • @borisshabanov6702
    @borisshabanov6702 6 лет назад +2

    Отличный урок!

  • @inquisitor4894
    @inquisitor4894 Год назад +1

    159й урок. Еще немного и финал. Урааа!!!

  • @xikmatillosultonov8959
    @xikmatillosultonov8959 4 года назад

    Огромное спасибо за эту уроки !!!!!

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

    Класс! Спасибо за урок!

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

    Спасибо вам огромное за уроки!!!

  • @sergapon666
    @sergapon666 6 лет назад +50

    будут ли про паттерны проектирования на c++?

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

      Так, а "итератор" чем вам не паттерн?

    • @Valiazerdes
      @Valiazerdes 6 месяцев назад

      @@princessmary5556 я думаю, этот человек имел в виду именно GoF

    • @princessmary5556
      @princessmary5556 6 месяцев назад

      @@Valiazerdes И часто вы вот так домысливаете за других? Вопрос риторический.

  • @kerril1309b
    @kerril1309b 5 лет назад

    Спасибо за качественный контент

  • @НикитаСеребряков-е1в

    Огромное спасибо!

  • @kaynsolo
    @kaynsolo 6 лет назад +3

    As usual, like it!

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

    Благодарю!

  • @ГусейнСалахов
    @ГусейнСалахов 4 года назад

    Очень много информации, но урок очень полезный!!

  • @teamaker10000
    @teamaker10000 6 лет назад +1

    Спасибо, хорошие уроки, как всегда)))

  • @86werth
    @86werth 4 года назад

    Спасибо за труды

  • @MrRomcek
    @MrRomcek 4 года назад

    Спасибо, удачи в продвижении канала, симуляция вируса мне понравилась)

  • @serhiyhrytsiuk4376
    @serhiyhrytsiuk4376 6 лет назад +16

    Сергей, скажите, а паттерны собираетесь объяснять?

  • @АндрейМиненко-ц3з
    @АндрейМиненко-ц3з 6 лет назад

    Спасибо за урок

  • @georgiismirnoff7344
    @georgiismirnoff7344 4 года назад

    Спасибо огромное!)

  • @mykhailomorhal2181
    @mykhailomorhal2181 6 лет назад

    Большое Спасибо)

  • @Sashikx_zxc
    @Sashikx_zxc 4 года назад +1

    Спасибо большое

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

      Девушка которая играет в роблокс изучает с++? ого

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

    Super!) Thank you

  • @obww306
    @obww306 11 месяцев назад

    Спасибо вам Махмод Саборжанович Йсламбиков

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

    Оператор "квадратные скобочки" почему так угарно звучит)))

  • @overdoses1794
    @overdoses1794 6 лет назад +3

    Здравствуйте, Сергей! Один вопрос, а за сколько вы выучили с++ и как эффективно обучаться, по вашему методу? И спасибо за урок!

    • @serhiyhrytsiuk4376
      @serhiyhrytsiuk4376 6 лет назад +1

      Overdoses подозреваю, что Сергей до сих пор учит с++))). Язык настолько объёмный, что нужны годы практики на его изучение. По поводу изучения языка по видеоурокам, то на своём опыте скажу, что без регулярной практики всё забывается. Год уже как учу шарпы и о итераторах приза был.

    • @overdoses1794
      @overdoses1794 6 лет назад +4

      тож, на пример всё ясно, а заходишь в компилятор и не можешь реализовать

  • @bananchik3125
    @bananchik3125 4 года назад

    после такого придется подписаться

  • @NikolayForostiy
    @NikolayForostiy 5 лет назад +2

    Интересная хрень:: когда тренировался с итераторами, решил изменить capasity на векторе, так вот итератор не переопределился на новый вектор .... наверное не существует механизма для этого в принципе. Ещё: если использовать метод insert(it,number) и после этого продолжить работу с итератором it advance(it, 4) или mas.erace(it), то нихрена не выйдет, ... даже если выкрутить capasity, т.е. сам итератор ломается.

    • @АлексейСвиридов-о5э
      @АлексейСвиридов-о5э 4 года назад +1

      Это достаточно легко объясняется. Изменение capacity связано с переаллокацией буфера, т.е. вектор начинает располагаться в другом участке памяти. А вот итераторы продолжают указывать на старые ячейки, в которых лежат уже не принадлежащие нам данные. В случае метода insert, новый элемент вставляется перед тем, на который итератор указывал, соответственно данные итератор теперь не корректны. Примечательно так же, что неправильными становятся и все итераторы, указывавшие на эл-ты следующие за вставленным(т.к. их делегаты сдвинулись).

  • @zhenyacanada1443
    @zhenyacanada1443 4 года назад

    Спасииибо :333

  • @vadimk711
    @vadimk711 11 месяцев назад

    подсел на видео автора ))
    не могу понять, как закомментировать выделенные строки. При комбинации клавиш Ctrl+K или Ctrl+U появляются лишь какие-то флажки возле строки

  • @ЯрославГоловко-ф6и
    @ЯрославГоловко-ф6и 4 года назад

    спасибо

  • @aestheticsbody9623
    @aestheticsbody9623 6 лет назад +2

    можно еще вот так делать
    MyVector.insert(it+3, 999);
    не писать -> advance(it, 3);

  • @alexeygrigorev4317
    @alexeygrigorev4317 6 лет назад +2

    Хм.. не нарушится ли логика, если контейнер будет, например, не интовым? Возможно ли будет делать инкримент для какого-либо другого типа данных? Т.е., даже если мы все int заменим на string, а потом в цикле for будем делать инкримент для нашего счётчика, удастся ли это? Не вылезет ли каких-то подводных камней?) Или в данном случае лучше будет использовать метод advance (и, если да, то какой параметр нужно будет передавать во втором параметре)?

    • @SimpleCodeIT
      @SimpleCodeIT  6 лет назад

      Изменение типа данных учитывается.

  • @firerun8599
    @firerun8599 5 лет назад +2

    А будут уроки по OpenGL?

  • @oshskiyuzbek4800
    @oshskiyuzbek4800 6 лет назад +2

    😊☝👍👍👍👍

  • @ДмитрийШушпанов-л7ф

    Сергей, спасибо за урок! Как всегда очень познавательно!
    Вопрос: если использовать Vector, не со встроенными типа, а пользовательскими, то почему в процессе работы Vector'а вызываются дополнительные деструкторы пользовательского типа с непонятными адресами (конструкторов с этими адресами не было)?

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

      что значит деструкторы с непонятными адресами?

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

      вызываться деструкторы будут при добавлении в вектор новых элементов, если в нем закончилось место. при этом все элементы которые там уже были будут перемещены/скопированы и на старых местах удалены деструктором пользовательского класса, собственно вот он и вызывается

  • @flickerstrike5525
    @flickerstrike5525 2 года назад +1

    у меня в голове каша, может кто поможет, класс iterator унаследован от класса const_iterator (как говорится в видео) или всё же наоборот и автор просто ошибся? а то получается что методы класса-наследника применимы к объектам базового класса (голова сейчас треснет), где я запутался?

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

    Вам следовало бы раньше рассказать про тип auto, которым можно было им заменять эту длиннющую запись vector::iterator :)

    • @princessmary5556
      @princessmary5556 Год назад +1

      На языке с++ не существует типа auto. Ключевое слово auto, так и называется "keyword auto". Это никакой не тип.

  • @alishermamaraximov4959
    @alishermamaraximov4959 4 года назад

    проста класс

  • @marksmith1883
    @marksmith1883 5 лет назад +2

    даже так работает
    vector myVector = { 12,232,323,231 };
    vector::iterator it= myVector.begin();
    for(int i=0; i

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

      Можно, конечно и так, но лучше вот так:
      vector myVector = { 12,232,323,231 };
      for (auto it=myVector.bebgin();it!=MyVector.end();++it)
      cout

  • @СергейНазаров-т3ш
    @СергейНазаров-т3ш 2 года назад

    а как допустим применить функцию к объекту листа, вот допустим у меня содержатся в листе объекты класса персонажа, у которого есть функция движения, через массив можно написать arr[i].func(); а как в листе это сделать?

  • @liudasliudelis9666
    @liudasliudelis9666 6 лет назад +3

    Dėkui

  • @user-mykyta_vyshniakov
    @user-mykyta_vyshniakov 4 года назад

    Добрый день! Не могу разобраться, возможно ли в vector записать информацию через cin ?

  • @tricking16
    @tricking16 6 лет назад +1

    можно вот так- > MyVector.insert(it+3, 999);
    не писать -> advance(it, 3);

  • @danbil4597
    @danbil4597 5 лет назад

    14:28, Но при этом iterator = vector.end() будет указывать на последний элемент вектора

    • @КириллСорокин-к2в
      @КириллСорокин-к2в 5 лет назад

      ну вообще то там нет присваивания

    • @panda9303
      @panda9303 5 лет назад +1

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

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

      Просто операторы по-разному описаны

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

      Вы пишите: *iterator = vector.end() будет указывать на последний элемент вектора* Нет, не будет. Не путайте итератор на последний элемент (rbegin) с итератором, который указывает позицию, за последним элементом (end)

  • @777noob777saibot
    @777noob777saibot 3 года назад +1

    Как const iterator i являясь константным будет увеличиваться в цикле for c помощью инкримента i++ ? Я не понял.

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

      Дело в том, что инкримент не увеличивает сам итератор, а только меняет его позицию на +1

    • @777noob777saibot
      @777noob777saibot 2 года назад +1

      @@Elemtro_Hiro я уже не помню своего вопроса

    • @sleepyNovember_project
      @sleepyNovember_project 9 месяцев назад

      @@Elemtro_Hiro выходит, несмотря на то что const_iterator... const, он всё равно позволяет работать с его позицией (изменять это значение), а const накладывается именно на доступ к данным контейнера через этот итератор

  • @mDwkaq
    @mDwkaq 22 дня назад

    Вопрос знатокам, почему я выдает ошибку, если хочу сделать insert 2 раза подряд
    vector::iterator it = myVector4.begin();
    myVector4.insert(it+3, 999);
    myVector4.insert(it, 1999);
    в окне ошибки написано что-то вроде "iterator outside range".

    • @amw-klips4432
      @amw-klips4432 16 дней назад

      Вы итератор типа int пытаетесь сдвинуть на число типа flot или double
      Если же у вас итератор типа flot или double, то он не подходит к вашему вектору, так как vector у вас имеет тип int

  • @andrey-kramer
    @andrey-kramer 5 лет назад

    > 3:10 имя массива - єто указатель на его первый элемент
    а разве не ссылка (&) ?
    П.С. до сих пор путаюсь с & и * в С\С++
    > 15:00
    можно ли в цикле for написать как условие итератор i != NULL ? (типа как аналогия с указателями != nil)

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

      Имя массива - это просто имя массива. К указателям не имеет никакого отношения. Вообще, даже просто формулировка некорректна из-за своей двусмысленности. Здесь будет уместна цитата Страуструпа:
      Имя обозначает (денотирует) объект, функцию, тип, значение или метку. Имя вводится в программе описанием (#8). Имя может использоваться только внутри области текста программы, называемой его областью видимости. Имя имеет тип, определяющий его использование. Объект - это область памяти. Объект имеет класс памяти, определяющий его время жизни. Смысл значения, обнаруженного в объекте, определяется типом имени, использованного для доступа к нему.
      (ц) Страуструп

  • @iaroslavtsepkov
    @iaroslavtsepkov 5 лет назад

    Жалко что не рассмотрены двумерные вектора

  • @Freedom_Code
    @Freedom_Code 5 лет назад

    Здравствуйте , Сергей , вы сказали , что к элементам вектора можно обращаться через operator[] , но вот не задача , clang-tidy эту операцию очень ругает .
    Допустим у меня есть вектор пустой , и дальше его надо заполнить с клавиатуры for (int i = 0 ; i

    • @panda9303
      @panda9303 5 лет назад +1

      Если у тебя вектор пустой то к нему нельзя обращаться через скобки, пытаясь добавить новый элемент тк получаешь ошибку сегментации памяти. Используй push_back (). Тут никакие итераторы не нужны.

  • @molchanovalexy
    @molchanovalexy 6 лет назад

    Как вывести значение итератора в textbox?

  • @artemlatsyk1838
    @artemlatsyk1838 5 лет назад

    У меня вопрос , myVector.end указывает на запасное место?

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

      На место, которое располагается сразу за последним элементом. Это не "запасное место". Это вообще уже "чужая память". Поэтому, к этой памяти нельзя обращаться.

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

    Работаю через VS2019 и при попытке выполнить код на 19:39 ( cbegin() и cend() ) получаею ошибку С2039. Почему так и как решить?

    • @viktor65366
      @viktor65366 Год назад +1

      Разобрался.
      Когда я просто приписал "с" к методам, следуя указаниям автора, то компилятор выдавал ошибку. Но когда я стер метод и написал его заново, ошибка пропала... Сначала выпал в осадок от такой ситуации, а потом случайно заметил, что при приписывании "с" методам я использовал кириллицу :) Совсем забыл, что для компилятора с на кириллице и на латинице - это разные символы.

    • @sleepyNovember_project
      @sleepyNovember_project 9 месяцев назад

      @@viktor65366 😶... bro

  • @caskey99
    @caskey99 4 года назад

    я 35 600 просмотр

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

    IiIukarno

  • @kosbarable
    @kosbarable 6 лет назад

    не удобны, эти ваши, итераторы... Индексы, как числа, своим видом в процессе чтения кода несут информацию, а итератор это литерал и на какой именно он элемент указывает просто из одной строчки кода понять будет нелегко, придётся "рыть" вглубь.

    • @GorgeousPuree
      @GorgeousPuree 6 лет назад

      мне тоже так кажется, непонятно существование этих итераторов... По крайней мере, если в конкретном случае можно реализовать массивом.

    • @princessmary5556
      @princessmary5556 Год назад +2

      @@GorgeousPuree итератор - паттерн, смысл которого: один и тот же код может пробежаться по элементам самых разных контейнеров, ничего не зная о деталях реализации их устройства. Другими словами, область примененеия итераторов - обобщенный код; ситуации, когда отсутствует конкретика, и заранее не известно, что именно прилетит в функцию: массив, или какой нибудь std::list, например.

  • @couscousburify
    @couscousburify 6 лет назад +3

    Спасибо за урок.

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

    Спасибо!!!

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

    спасибо

  • @STALINGRADETS
    @STALINGRADETS 5 лет назад

    Спасибо за урок.

  • @ДормидонтПаслёнов
    @ДормидонтПаслёнов 2 года назад

    Спасибо!

  • @ВітяКоміссаров
    @ВітяКоміссаров 2 года назад

    спасибо

  • @rizroz3955
    @rizroz3955 8 месяцев назад

    Спасибо

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

    спасибо