Тёмный
Изучаем С++ вместе
Изучаем С++ вместе
Изучаем С++ вместе
Подписаться
На этом канале автор изучает язык программирования С++, занимается по книгам разных авторов и добавляет свои видео в плейлисты, чтобы тем, кому интересно программирование, могли вместе с автором пытаться изучать языки программирования, структуры данных, алгоритмы и всё прекрасное, что имеет отношение к программированию. Подписывайтесь на канал, если Вы так же, как и автор, "заболели" программированием :)

Комментарии
@virtt1ent
@virtt1ent 7 дней назад
Спасибо БОЛЬШОЕ за работу!!!
@Sunflower-vu4uc
@Sunflower-vu4uc 15 дней назад
Можно ссылку на документацию?
@fredgolm4000
@fredgolm4000 18 дней назад
История не полная, как на счет языков до С, или по вашему начали с 3 буквы алфавита?
@iBarmalei
@iBarmalei 23 дня назад
а если поле структуры - указатель на адрес в куче, тогда как?))
@varya2952
@varya2952 28 дней назад
«varint =» не пропускает и говорит что много символов, что с этим делать?
@АбазовАндрей
@АбазовАндрей Месяц назад
Из мейна вызывается функция А -> далее создается два объекта и вызывается функция В-> создается два объекта и встречает генерацию исключение, после чего начинает искать ближайший блок кетч, то есть возвращаемся в функцию А и начинаем выполнять блок кетч, в котором на место переменной ехп пишем "лови меня" и далее по списку. После , если второй троу не раскоментирован, возвращаемся в мейн и завершаем работу. Если троу в функции А раскоментирован, возвращаемся в мейн и там ищем и выполняем блок кетч, пишем лови меня! после чего завершаем работу.
@АбазовАндрей
@АбазовАндрей Месяц назад
В книжке таки хотели продемонстрировать char. Надо const добавить в строчку catch(const char* exp). Опечатка, одна из многих. Да, ИИ от мелкомягких работает, в отличи от Алисы. ) В дальнейших листингах будет и этот код.
@АбазовАндрей
@АбазовАндрей Месяц назад
Место этой главы в начале книги. Ну и манипуляторы надо сбрасывать, иначе так и будет выводить по манипуляторски, не глядя на конец инструкции. )
@АбазовАндрей
@АбазовАндрей Месяц назад
Ну вот. А предыдущее задание мне казалось сложнее. Правило стека: первый вошел - последний вышел. Загружаем в стек фразу по символу и вуаля. )
@АбазовАндрей
@АбазовАндрей Месяц назад
Тот случай, когда не старался но очень полезно. :) Ответ на упражнение из подсказок в книжке не работает, выбивает ошибку предиката. Ранее удавалось отловить опечатки и исправить код работал, на этом упражнении у меня не получилось понять почему. Объяснение автора к стати ясности не добавляет, но хоть работает. Исправил унарный предикат Рао по принципу предиката из видео - работает. То есть унарный предикат оператора (<) в членах класса Person.
@Прометей-к1ю
@Прометей-к1ю Месяц назад
рукалицо. map - это красно-черное дерево.Хэш таблица в плюсах это unordered_map
@АбазовАндрей
@АбазовАндрей 2 месяца назад
Не поленился, переписал с правками (дата открытия, по ней и сортируем) у себя этот листинг. В общем делаем лямбду сортировки в алгоритме сорт с открытием (либо прописываем в публик доступ - возврат, или вообще структуру - не суть) поля по которому сортируем. Способ с друзиЯми не понравился. Использование ostream есть в книге, демонстрация правда косвенная.
@Прометей-к1ю
@Прометей-к1ю 2 месяца назад
resize - изменяет size вектора.Тоесть количество хранимых объектов.reserve - изменяет вместимость (capacity) вектора, те не сколько там сейчас объектов, а сколько в вектор может ханить обхектов до того, как произойдет реалокация вектора. Когда количество хранимых обектов станет равным вместимости вектора (size== capacity) вектор будет реалоцирован - будет выделен новвый буфер бОльшего размера и все значения будут из старого буфера перемещены \ скопированы в новый буфер, а старый буфер будет удален.Буфер тут это просто массив в диманмической памяти. Если сделать resize(5), а потом делать пушбеки - эти первые пять значений будут дефолтными (нулями например), а запушенные объекты будут добавлятся в конец в 6-ю 7-ю итд позицию.Те будут происходить реалокации. Если сделать reserve(5) то первые 5 объектов будут рзамещены в этой памяти реалокаций не будет. Как оптимизировать? Вставка в лист очень быстрая.Просто добавляется еще один указатель без реалокаций и копирований как в векторе не будет. Чтобы оптимизировать нужно было СРАЗУ вставлять объекты в лист.Либо если кол-во хранимых объектов известно заране использовать reserve и вектор.Либо использовать resize но вставлять элементы по индексам взмен дефолтных значений. Чтобы подогнать вместимость вектора (capacity) к его размеру (size) используется метод shirink_to_fit
@Прометей-к1ю
@Прометей-к1ю 2 месяца назад
const после аргументов означает что this константный.Это означает, что эта функция-член класса (метод) не меняет состояние объекта класса.Во все методы класса неявно первым аргументом передается указательл на текущий объект - this. Если у метода в конце есть const то передается не просто this , а const this. this - буквально значит "этот".Те тот у которого вывзывается метод.Те объект перед точкой.Например std::string str; str.size(). Сайз получит (неявно) первым аргументом указатель на строку str а const std::string name; name.size() - тут метод сайз получит первым аргументом (неявно) const this и если бы у метда size не было бы const в конце, то для строки name его было бы ЗАПРЕЩЕНО вызывать так как не выполнялась бы гарантия, что size не изменит состояния строки name.ЕСЛИ МЕТОД НЕ МЕНЯЕТ СОСТОЯНИЯ ОБЪЕКТА ОН ДОЛЖЕТ ИМЕТЬ CONST после скобок с параметрами. Вот перегруженный оператор сравнения.Мы передаем как аргумент другой объект по константной ссылке а конст в конце функции члена озанчает, что и объект на котором мы вызываем (this) тоже константный. Если бы не было const в конце, то мы бы не смогли сранивать объекты объявленые константными тк не было бы гарантии что оператор сравнения не изменит текущий объект (this). Легко это предстаить если у вас есть свободная функция (не метод класса) сравнивающая два контакта.Вы ведь оба передадите их по константной ссылке.(Их же просто нужно и сравнить).Ну вот в методе класса this явно не передается а константность настраиваетя этим самым "вторым" const
@Прометей-к1ю
@Прометей-к1ю 2 месяца назад
std::string text; std::getline(std::cin, text); for (size_t i = 0; i < text.size(); i++) if(text[i] == 'a') std::cout << i << ' ';
@АбазовАндрей
@АбазовАндрей 2 месяца назад
Как бы вывод результата выражения, без добавления значения, то есть изменения значений в ячейках в контейнера. Проверки в ответах не помешает. Разница правда, минимальная: a+= var_plus и отдельный вывод контейнера на экран.
@АбазовАндрей
@АбазовАндрей 2 месяца назад
То есть даже шанса не дал Евгению объяснить, как работает структура на месте ключа в классе мап. Жаль. Сильно подозреваю что в ответе на 2 упражнение опечатка. В описании пользовательского предиката используется оператор () и упоминается что другие операторы не используются. В ответе используется оператор <. Такая история.
@АбазовАндрей
@АбазовАндрей 2 месяца назад
Сортировка при вставке влияет на дальнейшее поведение, в частности на поиск. В сете тоже самое. В упражнении если отсортировать по номеру телефона, поиск по имени не даст ничего даже если определить оператор == в классе по имени в ручную.
@bulba1995
@bulba1995 2 месяца назад
Спасибо как всегда )
@АбазовАндрей
@АбазовАндрей 2 месяца назад
std::value_type - это функция-итератор, которая используется для определения типа значения, связанного с итератором. Она возвращает тип объекта, который будет возвращён при разыменовании итератора. std::value_type применяется в случаях, когда необходимо узнать тип значения, возвращаемого при обращении к итератору.
@bulba1995
@bulba1995 2 месяца назад
Молодец ,хороший контент .
@bulba1995
@bulba1995 2 месяца назад
Спасибо 👍
@bulba1995
@bulba1995 2 месяца назад
Спасибо за урок 👍
@bulba1995
@bulba1995 2 месяца назад
Я признателен ,хорошие уроки 👍
@АбазовАндрей
@АбазовАндрей 2 месяца назад
В контейнер типа инит вставишь тип интит. В контейнер типа словарь нужно вставлять данные типа словарь. К стати наглядное не явное преобразование типа стринг в тип словарь. )
@alexanderhoraskin
@alexanderhoraskin 2 месяца назад
в упражнении 1.3 время выполнения будет O(log n) потому что тут логичнее применить бинарный поиск
@АбазовАндрей
@АбазовАндрей 2 месяца назад
Сначала не понял а потом как понял: оказывается метод контейнера не работает на тип стринг, упс.
@АбазовАндрей
@АбазовАндрей 2 месяца назад
измени if на while и делай пуш прямо в лист в цикле убрав for вообще. ресайзом ты делал интересное: Метод класса vector resize() используется для изменения размера вектора. Он имеет две формы: resize(n): оставляет в векторе n первых элементов. Если вектор содержит больше элементов, то его размер усекается до n элементов. Если размер вектора меньше n, то добавляются недостающие элементы и инициализируются значением по умолчанию. resize(n, value): также оставляет в векторе n первых элементов. Если размер вектора меньше n, то добавляются недостающие элементы со значением value. Применение функции: std::vector<int> numbers1 { 1, 2, 3, 4, 5, 6 }; numbers1.resize(4); // оставляем первые четыре элемента - numbers1 = {1, 2, 3, 4} numbers1.resize(6, 8); // numbers1 = {1, 2, 3, 4, 8, 8} Важно учитывать, что применение функции resize может сделать некорректными все итераторы, указатели и ссылки на элементы.
@АбазовАндрей
@АбазовАндрей 2 месяца назад
Ответ Алисы на первый вопрос: Класс List предоставляет функции-члены sort() и remove(), чтобы облегчить работу с данными и обеспечить гибкость в манипулировании списками. Эти функции позволяют сортировать элементы списка в определённом порядке и удалять элементы из списка соответственно.
@АбазовАндрей
@АбазовАндрей 2 месяца назад
Чтобы меньше весил. На каждом элементе на одну ссылку меньше. Есть лист форвард есть лист васк. В маленьком занятии - обзоре контейнеров это упоминается.
@lusine594
@lusine594 3 месяца назад
Илья, Вы извините, но как Вы пишете код, если не знаете элементарных слов на английском, таких, как guess и smallest? Обескураживает
@sayomortal
@sayomortal 3 месяца назад
Спасибо что почитали за меня текст из методички. Вам бы лекции в захолустных колледжах читать.
@АбазовАндрей
@АбазовАндрей 3 месяца назад
Зря не смотришь ответы на задания в приложении. Думается мне, что данный раздел является частью процесса обучения в этой книге.
@АбазовАндрей
@АбазовАндрей 3 месяца назад
Наглядное пособие "не баг, а фича" ). Делаем цикл с выходом из него по копке на выход и крутится цикл пока клиент не нажмет на выход. :)
@АбазовАндрей
@АбазовАндрей 3 месяца назад
вставляем в середину: integers.insert(integers.begin() + (integers.size() / 2), another.begin(), another.end()); метод класса как-то благозвучней. )
@АбазовАндрей
@АбазовАндрей 3 месяца назад
без find: for (size_t index = 0; index < StringChec.length(); ++index) { if (StringChec[index] == 'a') cout << index+1 << " "; } с find есть в книжке
@АбазовАндрей
@АбазовАндрей 3 месяца назад
cin - присваивает до пробела, одно слово. getline - в представленном виде присваивает стрингу всю написанную строчку, включая пробелы. % - остаток от деления то есть четные не четные. увеличили нечетные. я просто шаг в два в цикл прописал for(... i=0 ... I+=2)
@ВитёкУбойных
@ВитёкУбойных 3 месяца назад
Канеш поздно, но на моменте 26:20 там +1 и -1 не потому что: ну это массив, сами понимаете, а для того чтобы не учитывать крайние значения, с которыми уже было сравнение
@fensrg
@fensrg 3 месяца назад
раньше автором этого поделия был Джесс Либерти
@МаратЮсупов-ж3р
@МаратЮсупов-ж3р 3 месяца назад
Почему return 0? Потому что метод возвращает int? или всегда так надо? или это означает что метод ничего не возвращает?
@АбазовАндрей
@АбазовАндрей 3 месяца назад
Поняли. :). Если передаёшь значение по ссылке, не нужен ретурн. :)
@АбазовАндрей
@АбазовАндрей 3 месяца назад
Fish* pFish = new Tuna; Tuna* pTuna = pFish ; Произошла дидактика. За ради демонстрации, два объекта одного класса одинаково похожи друг на друга и приведены к указателю типа Tuna.
@АбазовАндрей
@АбазовАндрей 4 месяца назад
Да в общем то общем смог. Я то просто переписал ответ, лень копипастить было. Реализация преобразования из книжки понравилась: operator int(){return((year*10000)+(month*100)+(day));} Запомнил как алгоритм.
@4pynk
@4pynk 4 месяца назад
Так где инфа про хеши то?)) переименуй видео блин вводишь людей в заблуждение
@ПалійМаксимСухробович
Спасибо очень помог
@ВладСергиенко-ь1в
@ВладСергиенко-ь1в 4 месяца назад
Ору с этой фигни, включаем cmath что бы работать с математическими функциями, потом оказывается мы умеем сами искать эти функции без включения)
@ВладСергиенко-ь1в
@ВладСергиенко-ь1в 4 месяца назад
Читая эту книгу появляется впечатление что автор заваливаем читателя кучей терминов которые только усложняют понимание того как это работает на самом деле. Проще показать что такое функция схематически, показать что она может принимать аргументы, показать как с одной функции вызывается другая и выполняет каки-то действия. На этом для начала достаточно, вы точно будете понимать как это работает. Уверен что посмотрев эти ролики 99% новичков даже не поняли зачем нужно пространство имён. Странная книга не знаю почему все ее рекомендуют.
@АбазовАндрей
@АбазовАндрей 4 месяца назад
10.9 А потом делаем объект типа мотор и заводим его в мейне... Это придирка наверно, но при публике мотор может летать по мейну вне каров.