Вообще говоря, программировать на C сложнее, чем на таких языках, как Python.
В некотором смысле это связано с тем, что C - язык более низкого уровня, ближе к ассемблеру; он просто дает вам то, что дает базовая машина.
Например, целые числа в Python ведут себя так же, как их математические аналоги. Они не ограничены; при сложении целых чисел вы всегда получите правильный ответ, независимо от их размера. (Если, конечно, на компьютере не закончится память. Ни один язык не может создать бесконечные ресурсы. Но он может гарантировать, что вы получите либо правильный ответ, либо сбой. И никогда - неправильный ответ.)
▪Читать дальше
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤2🔥2🤡2
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Семинар 1.1. Алгоритм Евклида.
Семинар 1.2. Системы счисления.
Семинар 1.3. Числа Фибоначчи.
Допсеминар: unix shell
Семинар 2.1. Простые числа.
Семинар 2.2. Побитовые вычисления.
Семинар 2.3. Время и случайность.
Углубление пройденного: логическая память и виртуальная память.
Семинар 3.1. Линейный поиск и простые сортировки.
Семинар 3.2. Стратегия "разделяй и властвуй".
📌 источник
#cpp #programming
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23❤3🔥3⚡1
Здесь рассказывается о RISC-V, о процессе сборки C++ кода, о том, что происходит в ходе компиляции под капотом, про оптимизацию программ, про ассемблер, линкер и ещё про много всего
*RISC-V — открытая и свободная система команд и процессорная архитектура на основе концепции RISC (reduced instruction set computer)
Доступ по закрытой ссылке, оцените)
🔗 Youtube
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤3⚡1🔥1💩1
std::vector
?Основные плюсы и минусы происходят от линейного расположения элементов в памяти и ограничений, которые это расположение накладывает.
std::vector
имеет:O(1)
.Решение: С этим можно побороться, если зарезервировать заранее всю нужную память под все элементы, но мы редко знаем каким будет максимальное количество элементов. И памяти на все процессы так не напасёшься, даже учитывая оптимизацию современных ОС: когда ОС физически выделяет память только когда процесс начинает её использовать.
Хороший
cache coherence
:vector
по сравнению с контейнерами а-ля list
(map
, set
, forward_list
etc).Если
vector
параллельно обходят два потока и каждый из них модифицирует его содержимое, то вероятно кэши этих потоков будет смотреть на смежную область памяти vector
-а. Тогда каждая из записей будет инвалидировать содержимое кеша ядра другого потока, тем самым приводя к регулярному refetch-у. В некоторых корнер кейсах замена vector
на list
может внезапно привести к улучшению перфоманса. Решение: Лечится такая проблема обычно увеличением размера элемента до размера кешлайна. Либо же выдачей каждому потоку по
N
элементов, где (N * sizeof(ElementT)) == cacheline size
.@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22❤4🔥2
🤡35👍6⚡3😁3👎1
malloc
с помощью assert
Указатель, который вернула функция
malloc
, необходимо проверить перед использованием. Неправильным решением будет использовать для этого макрос assert
. Функция
malloc
возвращает нулевой указатель, если невозможно выделить буфер памяти указанного размера. Поэтому прежде, чем разыменовать указатель, его нужно проверить на равенство NULL
, например так: int *ptr = malloc(sizeof(int) * N);
if (!ptr)
{
// Обработка ошибки выделения памяти
}
🔗 Подробнее можно почитать тут
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥3⚡1❤1
Здесь разобраны все самые важные понятия C++
Базовые конструкции C++
— Типы данных
— Ветвления и циклы
— Векторы и строки
— Составные типы данных
— Ссылки, указатели, константность
— Функции
— Шаблоны
Стандартная библиотека C++
— Последовательные контейнеры
— Ассоциативные контейнеры
— Алгоритмы
— Адаптеры и представления
Идиомы C++
— Классы
— Шаблонные классы
— Жизненный цикл объекта
— Наследование и полиморфизм
— Обработка исключений
— Идиома RAII и умные указатели
...и ещё много всего!
🔗 Гайдлайн
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤4🔥3✍1⚡1