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

Поділитися
Вставка
  • Опубліковано 21 лис 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

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

  • @segars9604
    @segars9604 10 місяців тому +1

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

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

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

  • @vladalu9794
    @vladalu9794 6 років тому +5

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

  • @Vlad_Ofitserov
    @Vlad_Ofitserov Рік тому +3

    Щиро дякую!

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

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

  • @evgeniygazetdinov1620
    @evgeniygazetdinov1620 6 років тому +1

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

  • @АлександрАдамсон-д7г
    @АлександрАдамсон-д7г 6 років тому +9

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

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

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

  • @alexdubinskiy7390
    @alexdubinskiy7390 5 років тому +6

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

  • @pavelios3577
    @pavelios3577 5 років тому +1

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

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

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

  • @digitalturkistan1857
    @digitalturkistan1857 6 років тому +72

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

    • @KK-gg8sk
      @KK-gg8sk 5 років тому +6

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

    • @cnota69
      @cnota69 3 роки тому +1

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

  • @MISSTIK2007
    @MISSTIK2007 5 років тому +2

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

  • @akrabato
    @akrabato 5 років тому +1

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

  • @Ланс-м1в
    @Ланс-м1в 6 років тому

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

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

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

  • @KurpatovInstagram
    @KurpatovInstagram 6 років тому +2

    Спасибо!

  • @inquisitor4894
    @inquisitor4894 Рік тому +1

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

  • @Ermine882
    @Ermine882 6 років тому +4

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

  • @PyleNormis
    @PyleNormis 3 роки тому +1

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

  • @NoNo-fl6oq
    @NoNo-fl6oq 2 роки тому

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

  • @borisshabanov6702
    @borisshabanov6702 6 років тому +2

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

  • @digitalturkistan1857
    @digitalturkistan1857 6 років тому +23

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

  • @SimpleCodeIT
    @SimpleCodeIT  6 років тому +7

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

    • @CaytoCatugawa
      @CaytoCatugawa 5 років тому

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

  • @xikmatillosultonov8959
    @xikmatillosultonov8959 4 роки тому

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

  • @sergapon666
    @sergapon666 6 років тому +50

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

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

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

    • @Valiazerdes
      @Valiazerdes 5 місяців тому

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

    • @princessmary5556
      @princessmary5556 5 місяців тому

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

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

    Благодарю!

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

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

  • @DEKJ1000
    @DEKJ1000 3 роки тому

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

  • @C2H5OHH
    @C2H5OHH 3 роки тому

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

  • @kerril1309b
    @kerril1309b 5 років тому

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

  • @ГусейнСалахов
    @ГусейнСалахов 4 роки тому

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

  • @86werth
    @86werth 4 роки тому

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

  • @kaynsolo
    @kaynsolo 6 років тому +3

    As usual, like it!

  • @teamaker10000
    @teamaker10000 6 років тому +1

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

  • @georgiismirnoff7344
    @georgiismirnoff7344 4 роки тому

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

  • @АндрейМиненко-ц3з
    @АндрейМиненко-ц3з 6 років тому

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

  • @obww306
    @obww306 11 місяців тому

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

  • @mykhailomorhal2181
    @mykhailomorhal2181 6 років тому

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

  • @serhiyhrytsiuk4376
    @serhiyhrytsiuk4376 6 років тому +16

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

  • @tarasenko_
    @tarasenko_ 4 роки тому +3

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

    • @princessmary5556
      @princessmary5556 Рік тому +1

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

  • @bama2619
    @bama2619 3 роки тому

    Super!) Thank you

  • @Sashikx_zxc
    @Sashikx_zxc 4 роки тому +1

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

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

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

  • @alexeygrigorev4317
    @alexeygrigorev4317 6 років тому +2

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

    • @SimpleCodeIT
      @SimpleCodeIT  6 років тому

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

  • @vadimk711
    @vadimk711 11 місяців тому

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

  • @MrRomcek
    @MrRomcek 4 роки тому

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

  • @oshskiyuzbek4800
    @oshskiyuzbek4800 6 років тому +2

    😊☝👍👍👍👍

  • @overdoses1794
    @overdoses1794 6 років тому +3

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

    • @serhiyhrytsiuk4376
      @serhiyhrytsiuk4376 6 років тому +1

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

    • @overdoses1794
      @overdoses1794 6 років тому +4

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

  • @ЯрославГоловко-ф6и

    спасибо

  • @zhenyacanada1443
    @zhenyacanada1443 4 роки тому

    Спасииибо :333

  • @user-mykyta_vyshniakov
    @user-mykyta_vyshniakov 4 роки тому

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

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

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

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

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

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

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

  • @NikolayForostiy
    @NikolayForostiy 5 років тому +2

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

    • @АлексейСвиридов-о5э
      @АлексейСвиридов-о5э 4 роки тому +1

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

  • @firerun8599
    @firerun8599 5 років тому +2

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

  • @bananchik3125
    @bananchik3125 4 роки тому

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

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

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

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

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

  • @СергейНазаров-т3ш
    @СергейНазаров-т3ш 2 роки тому

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

  • @alishermamaraximov4959
    @alishermamaraximov4959 4 роки тому

    проста класс

  • @aestheticsbody9623
    @aestheticsbody9623 6 років тому +2

    можно еще вот так делать
    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 накладывается именно на доступ к данным контейнера через этот итератор

  • @tricking16
    @tricking16 6 років тому +1

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

  • @artemlatsyk1838
    @artemlatsyk1838 5 років тому

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

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

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

  • @molchanovalexy
    @molchanovalexy 6 років тому

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

  • @Freedom_Code
    @Freedom_Code 5 років тому

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

    • @panda9303
      @panda9303 5 років тому +1

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

  • @andrey-kramer
    @andrey-kramer 5 років тому

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

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

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

  • @liudasliudelis9666
    @liudasliudelis9666 6 років тому +3

    Dėkui

  • @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

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

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

    • @viktor65366
      @viktor65366 Рік тому +1

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

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

      @@viktor65366 😶... bro

  • @mDwkaq
    @mDwkaq 16 днів тому

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

    • @amw-klips4432
      @amw-klips4432 10 днів тому

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

  • @iaroslavtsepkov
    @iaroslavtsepkov 5 років тому

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

  • @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 роки тому

    спасибо

  • @rizroz3955
    @rizroz3955 8 місяців тому

    Спасибо

  • @viktor_pavlov_channel
    @viktor_pavlov_channel 2 місяці тому

    спасибо