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

Поділитися
Вставка
  • Опубліковано 25 лис 2024

КОМЕНТАРІ • 124

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

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

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

      #SimpleCode привет! Решил для себя изучить языки программирования, начал с с++. В дороге читаю Шилдта и SoloLearn(интересно узнать твое мнение про эту программу на андроиде), а вот дома практикуюсь по твоим видеоурокам - все доходчиво и понятно, спасибо за это!

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

    Разница в использовании префиксного и постфиксного инкремента/декремента для итераторов в том, что в случае префиксного итератора, в теории, просто изменяется состояние объекта, и потом он возвращается, а при использовании постфиксного инкремента, состояние также изменяется, но возвращается объект с предыдущим состоянием, т.е. для этого компилятору необходимо создать ещё 1 объект. Это влияет на скорость работы. Но, вроде как современные компиляторы уже могут сами оптимизировать подобные случаи, и скорость работы не отличается. Но для себя я всё же сделал вывод, что если использование префиксного и постфиксного инкремента не влияет на правильность ответа, то предпочтительно использовать префиксный инкремент.

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

      Примерно знал что именно так , Но этот ответ более адекватный и понятный нежели мой ! Спасибо !

    • @CharaVerKys
      @CharaVerKys Рік тому +4

      честно говоря я сидел вахуе что такой элементарный момент спрашивается при том что был "урок" с материалом на тему перегрузки элементов

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

      @@CharaVerKys честно говоря, я в ахуе, что 5 лет назад я мог высерать такие формулировки из своей ныне тупой головы

    • @ИгроманРоман-н2ш
      @ИгроманРоман-н2ш Рік тому

      @@CharaVerKys он его спросил скорей всего чтобы люди которые забыли этот урок вспомнили его

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

      Крут, молодец

  • @Вероника-щ1ф6у
    @Вероника-щ1ф6у 6 років тому +117

    Если мы хотим только увеличить значение итератора, то получается, что префиксная форма предпочтительна. Поэтому, один из советов по микро-оптимизации программ писать «for (it = a.begin(); it != a.end; ++it)» вместо «for (it = a.begin(); it != a.end; it++)». В последнем случае происходит создание ненужного временного объекта, что снижает производительность.
    Скорость работы в Release версии:
    iterator++. Total time: 0.87779
    ++iterator. Total time: 0.87753
    А теперь ответим на вопрос, зачем же тогда стоит менять it++ на ++it. Замерим скорость работы Debug версии:
    iterator++. Total time: 83.2849
    ++iterator. Total time: 27.1557

  • @andrewbistroff7558
    @andrewbistroff7558 6 років тому +13

    Спасибо Сергей за ваши труды!

  • @mishakalashov1496
    @mishakalashov1496 6 років тому +12

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

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

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

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

    Огромное спасибо Сергей! Отличный урок! Лайк! Просим продолжения по С++.

  • @ustavshayabulochka
    @ustavshayabulochka 4 роки тому +10

    Большое спасибо за ваши уроки! Вы помогли мне сдать программирование на 1 курсе)) Так понятно и доходчиво не всякий преподаватель объяснить сможет. Всего вам наилучшего, очень рада, что наткнулась на вас😀👍

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

      А сейчас есть программирование ?

  • @АкимДанилов-к2е
    @АкимДанилов-к2е Рік тому +2

    Контент в кайф давай ещё по больше такого, не останавливайся

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

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

  • @viper_0097
    @viper_0097 9 місяців тому +1

    Уже до этого видео интересовался таким вопросом, поэтому знаю ответ:
    префиксный инкремент сначала увеличит переменную на единицу, а потом вернет значение, а постфиксный вернет текущее значение переменной и прибавит единицу переменной.
    в цикле for разницы между ними никакой, потому что итератор не используются во время использования оператора

  • @ИльяМаксимец-ъ4у
    @ИльяМаксимец-ъ4у 4 роки тому +2

    Огромное спасибо за предоставленную информацию!

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

    #liststl #SimpleCode #урокипрограммирования

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

    спасибо за урок)двигаемся дальше, сложно но это того стоит

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

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

  • @EngineerFox
    @EngineerFox 2 місяці тому +2

    12:50 Без разници, для цикла For нет значения - постфиксный или префиксный инкремент вы используете.

    • @desidemeokla
      @desidemeokla Місяць тому

      есть разница. Хоть вывод одинаковый - процессор намного больше

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

    Постфиксный инкремент обременен задачей сохранения и возврата старого значения итератора. Это требует времени и усилий, что, как правило, делает его медленнее.

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

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

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

    У меня потребовалось использовать template , только так заработало, по другому никак!

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

    спасибо!

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

    Спасибо Сергей за уроки!

  • @San-uf5hm
    @San-uf5hm 4 роки тому +5

    Хочу добавить, что метод erase возвращает итератор на следующий элемент после удаляемого

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

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

  • @starshow4001
    @starshow4001 6 років тому +8

    спасибо крутые ролики.... ты топ

  • @Ivan-Shyriaiev
    @Ivan-Shyriaiev 4 роки тому +1

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

  • @catastrophic3709
    @catastrophic3709 6 місяців тому

    Постификсный оператор инкремента, возвращает значение с запозданием, которое будет лишь копией инкрементируемой сущности. Префиксный непосредственно возвращает инкрементируемую сущность

  • @ИсламАхмедов-к3т

    Разница между префиксным и постфиксным инкрементом заключается в том, когда происходит увеличение значения итератора.
    Префиксный инкремент выполняет операцию увеличения итератора и затем возвращает новое значение. Например, если у нас есть итератор i со значением 3, то префиксный инкремент ++i увеличит i до 4 и вернет 4.
    Постфиксный инкремент также выполняет операцию увеличения итератора, но возвращает его старое значение. Например, если у нас есть итератор i со значением 3, то постфиксный инкремент i++ вернет 3 и затем увеличит i до 4.
    В большинстве случаев разница между использованием префиксного и постфиксного инкремента не имеет большого значения. Однако есть некоторые ситуации, когда это может быть важно. Например, если мы используем итератор в цикле и хотим, чтобы его значение увеличивалось перед выполнением каждой итерации, то нам следует использовать префиксный инкремент. Если же нам нужно использовать значение итератора до его увеличения, то нам следует использовать постфиксный инкремент.

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

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

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

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

  • @Алексей-ж3г4г
    @Алексей-ж3г4г 6 років тому +5

    тебя вся моя школа смотрит!!!!!!!!!

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

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

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

    Thank you !!!!!!!!!!!!!!!!!!!

  • @mr.4ilyman89
    @mr.4ilyman89 10 місяців тому

    Разница постфиксого и префиксного инкремента в циклах в том, что когда постфиксный, то i будет итерироваться в конце тела цикла, а префиксного в том, что сначала i итерируется, а только потом происходит тело цикла

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

    Спасибо вам я из 🇺🇿

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

    572 это как мем с цифрой 6 и подписью "четыре"

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

    Лайк однозначно!

  • @kelvin7447
    @kelvin7447 10 місяців тому

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

  • @СтасДзундза
    @СтасДзундза 6 років тому +3

    дякую!

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

    Ещё интересны методы - splice и merge, но я думаю они не так часто используются, а видеоурок увеличился бы минут на 20

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

    Спасибо!

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

    разница в том, что в в префиксном итераторе итератор увеличеваеться и уже увеличенное значение возвращаеться. В случае постфиксновго итреатора значение увеличеваеться но возвращеться старое значение.
    Это сделано таки образом потому что так работают итератори для простих типов.

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

    Префиксный итератор возвращает новое значение итератора, а постфиксный возвращает исходное значение итератора.🎉

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

    префиксный инкремент предподчтительней в работе с итераторами так как он изменяет объект и возвращает его, в случае с постфиксным инкрементом итератора - состояние объекта должно измениться, но создается лишний объект

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

    i = 0
    cout

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

    Префиксный итератор изменяет состояние обьекта ,а постфиксный итератор состояние также изменяет, но возвращается объект с предыдущим состоянием и ему надо создавать новый обьект

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

    9:31 Да-да, это определённо точно закономерно и очевидно число пятьсот семьдесят два)

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

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

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

    Спасибо

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

    Krasava

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

    спасибо

  • @ЦветущаяСакура-ъ7ф

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

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

    23:00 assign

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

    Благодарю! Уважаемый, Сергей! Я так понимаю list и массивы это что не совсем связанное друг с другом(#include
    #include
    #include
    using namespace std;
    int main()
    {
    setlocale(LC_ALL, "ru");
    int jq, temp;
    cout jq;
    int *arr = new int();
    for (int i = 0; i < jq; i++)
    {
    arr[i];
    cout

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

      На сколько я помню, я много раз говорил, что лист это реализация двусвязного списка.

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

      да, уже посмотрел урок, просто пока что работаю с javascript и уже слегка начал забывать си(

  • @OlIv-j2b
    @OlIv-j2b Місяць тому

    Спасибо! Для list Можно сделать экземпляр, где можно перегрузить [] и пользоваться как обычным массивом- с этим вроде проблем нет. А как вот делегировать конструктор в базовый list и сделать, что бы при обьявлении было, что вроде этого: my_List﹤int﹥ lst1 { 10, 20, 40 } пока не понял.

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

    Здравствуйте. Не могли бы вы немного рассказать о работе с Сом портами? Было бы очень интересно.

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

    572 убило💀

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

    Подскажите, пожалуйста, как в функции print, без использования auto, инициализировать константный итератор.
    list::const_iterator i=list.cbegin()
    Что здесь не так?

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

      list::const_iterator i=list.cbegin(), если актуально)

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

    9:30
    572?! 😄😄😄

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

    при префиксном не происходит создание временного объекта

  • @АннаМордалевич
    @АннаМордалевич 4 роки тому +1

    Обновите ссылку в описании на двусвязный список, выдает 404

  • @gosteface9541
    @gosteface9541 7 місяців тому

    Считается ли то, что я нашел информацию на тему разницы постфиксного и префиксного инкремента путем того, что просто посмотрел следующее видео (Так то информацию я нашел)

  • @Kate-b9h3o
    @Kate-b9h3o 6 років тому +1

    Здравствуйте! А как реализовать список из объектов класса?

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

    Число 572)

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

    ахахах, 6:40 в голове прозвучал комментарий с текстом: "Ты тупой?" :D

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

    ура я восьмой

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

    Не пойму почему они не могли перегрузить оператор [ ] . Столько разных методов , даже блин перевернуть коллекцию можно, а элементарного оператора [ ] нет ...

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

    Спасибо, разрешите вопрос:
    если я заполняю list объектами произвольного класса, или даже просто строковыми значениями String, то как будет работать myList.sort() ? Как сортировка поймет что больше, а что меньше ?

    • @ВладимирЛеденёв-э6г
      @ВладимирЛеденёв-э6г 3 роки тому

      @@yashmerino А с классами? В данный момент мучаюсь, внутри листа лежат структуры, и не возможно получить доступ к внутреннему элементу такой структуры. Нужны сортировки по разным полям.

    • @ВладимирЛеденёв-э6г
      @ВладимирЛеденёв-э6г 3 роки тому

      @@yashmerino В общем оказывается ее нужно было взять в скобки. Меня смутило что cout без скобок выводит содержимое, думал можно к указателю прямо обращаться.

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

    ++i - если так, то мы как бы изначально указываем на уже первый элемент в списке итератору.

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

    for (const auto& i : myList)
    cout

  • @denys.martyniuk
    @denys.martyniuk 3 роки тому

    а как работать с пользовательскими типами данных? как вывести их например

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

      для класса можно перегрузить оператор

    • @denys.martyniuk
      @denys.martyniuk 3 роки тому

      @@tabar_1312 вопрос уже не актуален, но спасибо

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

    Спасибо за урок. У меня какая то не понятная проблема. У меня class list не подключается и программа не распознает не List не ее объект. Сам написал класс как мы это делали все работает когда вот так List myList;
    Но когда присваиваю значение как массиву List myList = { 54, 17, 3 };
    уже не работает. Кто может помочь почему #include не помогает? Спасибо.

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

      Короче я разобрался. Я допустил ошибку. Слово list написал с большой буквой List. Но сейчас все работает.

  • @Данила-я1э
    @Данила-я1э 6 років тому

    а почему у меня не работает auto? Версия С++ 17

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

    Двусвязный список | Динамические структуры данных #2 - ссылка не работает

  • @СарматПересветов
    @СарматПересветов 3 роки тому

    всем привет. может кто подскажет, если в list не реализован итератор свободного доступа, как мы перенаправляем наш итератор с помошью инкремента (it++), и почему тогда если мы можем перенаправить с помошью инкремента, то не работает запись (it+=1; или it=it+1), ведь по сути эти записи (it+=1; или it=it+1) равносильны записи (it++). ??

  • @aram.nett1
    @aram.nett1 6 років тому

    После 24:50 не понял....
    Как бы..мы взяли первый элемент второго листа, и последный элемент первого, тоисть 19 и 99...
    И оно должно было показывать 99 по 19 штук....не?

    • @СправаФея
      @СправаФея 6 років тому

      там перегруженная функция,

    • @Ordinary_man2049
      @Ordinary_man2049 Місяць тому

      Тоже не вкурил прикола. Видимо, при передача в качестве аргумента итератор функция перегружена под это дело, как подсказали умные люди выше.

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

    Разница в том что префикс ный инкремент выводит только следующие число а поствексный выводит следующее но и выводит прошлое число

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

    +

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

    Самый нормальный способ: ++i++

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

    А если второй раз revese ?

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

    прошо обьесните что делать если ты скачал виртуал студио 2017 как ты рассказывал в видео и оно не грузится причом у меня 8 виндовс

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

      спасибо за совет но можно совет по моей проблеме

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

      поставь галочку std 8.1.0

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

      большое спасибо за подсказку

  • @ІринаЧерній-я4ч
    @ІринаЧерній-я4ч 4 роки тому

    почему нєзя отак:
    auto o = a.end();
    cout

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

      потому что метод end() указывает как бы на несуществующий элемент, а как ты получишь доступ к тому, чего не существует.

  • @ЮрийРепин-т4к
    @ЮрийРепин-т4к 3 роки тому +1

    Я не докапываюсь, но просто написано 979, а вы читаете 572🤔😊😥

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

    кто смотрит видосы Simple code на скорости x3 ?

    • @Ordinary_man2049
      @Ordinary_man2049 Місяць тому

      Привет из 2024. Х3 убрали, осталось только х2

    • @nMnFunny
      @nMnFunny Місяць тому

      @@Ordinary_man2049 Можно прописывать в консоли. Хоть х10 ставь)

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

    Вы говорите что "мы изучили итераторы"
    Но это только следующий урок.
    Сами посмотрите на свой же плейлист

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

      это какой-то баг в ютубе, ролик с итераторами вышел раньше

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

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

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

    Спасибо!

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

    спасибо

  • @ЮрийРепин-т4к
    @ЮрийРепин-т4к 3 роки тому +1

    Я не докапываюсь, но просто написано 979, а вы читаете 572🤔😊😥

  • @Orange_999
    @Orange_999 23 дні тому

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

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

    Спасибо!!!

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

    спасибо

  • @ВітяКоміссаров
    @ВітяКоміссаров 2 роки тому

    спасибо