#Собес
🤔 Что такое заголовочные файлы и каковы их применения в языке С?
Заголовочные файлы (.h) в С содержат объявления функций, структур и констант, которые могут использоваться в нескольких исходных файлах программы. Они позволяют подключать внешние библиотеки или повторно использовать код без дублирования.
👉 Новости 👉 Платформа
Заголовочные файлы (.h) в С содержат объявления функций, структур и констант, которые могут использоваться в нескольких исходных файлах программы. Они позволяют подключать внешние библиотеки или повторно использовать код без дублирования.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
#полезное
🫠 Это официальная документация по препроцессору C++ в GNU Compiler Collection (GCC)
Препроцессор C++ выполняет начальную обработку исходного кода перед компиляцией, обрабатывая директивы, такие как
🟠 Основы работы препроцессора
🟠 Макросы
🟠 Условную компиляцию
🟠 Встроенные директивы GCC
Ознакомиться
👉 Новости 👉 Платформа
Препроцессор C++ выполняет начальную обработку исходного кода перед компиляцией, обрабатывая директивы, такие как
#define, #include, #if, #pragma и другие.Ознакомиться
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2❤1
#полезное
🥺 std::ranges::views
::filter
Документация
👉 Новости 👉 Платформа
::filter
std::ranges::views::filter (C++20) позволяет удобно фильтровать элементы в диапазоне без создания временных контейнеров. Это делает код более выразительным и эффективным.Документация
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁5🥰2❤1
#Собес
🤔 Когда используется ключевое слово "void" в Функции?
Ключевое слово void используется в языке С для обозначения того, что функция не возвращает значения. Оно ставится в заголовке функции, если не предполагается возвращать никакие данные.
👉 Новости 👉 Платформа
Ключевое слово void используется в языке С для обозначения того, что функция не возвращает значения. Оно ставится в заголовке функции, если не предполагается возвращать никакие данные.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3🤡1
#ЛитКод
Задача: 364. Nested List Weight Sum II
Вам дан вложенный список целых чисел nestedList. Каждый элемент является либо целым числом, либо списком, элементы которого также могут быть целыми числами или другими списками.
Глубина целого числа — это количество списков, внутри которых оно находится. Например, вложенный список [1,[2,2],[[3],2],1] имеет значение каждого целого числа, установленное равным его глубине. Пусть maxDepth будет максимальной глубиной любого целого числа.
Вес целого числа определяется как maxDepth - (глубина целого числа) + 1.
Верните сумму каждого целого числа в nestedList, умноженную на его вес.
Пример:
👨💻 Алгоритм:
1⃣ Инициализировать первый уровень BFS-дерева, добавив все элементы из входного nestedList в очередь.
2⃣ Для каждого уровня извлекать передний элемент из очереди. Если это список, то добавить его элементы в очередь. В противном случае обновить значения sumOfElements, maxDepth и sumOfProducts.
3⃣ Когда очередь станет пустой, вернуть значение (maxDepth + 1) * sumOfElements - sumOfProducts.
😎 Решение:
👉 Новости 👉 Платформа
Задача: 364. Nested List Weight Sum II
Вам дан вложенный список целых чисел nestedList. Каждый элемент является либо целым числом, либо списком, элементы которого также могут быть целыми числами или другими списками.
Глубина целого числа — это количество списков, внутри которых оно находится. Например, вложенный список [1,[2,2],[[3],2],1] имеет значение каждого целого числа, установленное равным его глубине. Пусть maxDepth будет максимальной глубиной любого целого числа.
Вес целого числа определяется как maxDepth - (глубина целого числа) + 1.
Верните сумму каждого целого числа в nestedList, умноженную на его вес.
Пример:
Input: nestedList = [[1,1],2,[1,1]]
Output: 8
Explanation: Four 1's with a weight of 1, one 2 with a weight of 2.
1*1 + 1*1 + 2*2 + 1*1 + 1*1 = 8
#include <vector>
#include <queue>
using namespace std;
class NestedInteger {
public:
bool isInteger() const;
int getInteger() const;
const vector<NestedInteger> &getList() const;
};
class Solution {
public:
int depthSumInverse(vector<NestedInteger>& nestedList) {
queue<NestedInteger> q;
for (auto& ni : nestedList) q.push(ni);
int depth = 1, maxDepth = 0, sumOfElements = 0, sumOfProducts = 0;
while (!q.empty()) {
int size = q.size();
maxDepth = max(maxDepth, depth);
for (int i = 0; i < size; ++i) {
NestedInteger nested = q.front();
q.pop();
if (nested.isInteger()) {
int value = nested.getInteger();
sumOfElements += value;
sumOfProducts += value * depth;
} else {
for (auto& ni : nested.getList()) q.push(ni);
}
}
depth++;
}
return (maxDepth + 1) * sumOfElements - sumOfProducts;
}
};
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
🤬 Чувак критикует инструменты сборки (build tools) для C/C++.
Он говорит, что C и C++ — это мощные языки, но несмотря на это, разработчики не могут эффективно использовать их для организации процесса сборки. Вместо этого они часто прибегают к Python (который он называет "интерпретируемым игрушечным языком"), что, только усложняет процесс.
Проще говоря, для сборки проектов на C/C++ приходится использовать внешние инструменты и скрипты, вместо того чтобы решать эти задачи средствами самих языков.
👉 Новости 👉 Платформа
Он говорит, что C и C++ — это мощные языки, но несмотря на это, разработчики не могут эффективно использовать их для организации процесса сборки. Вместо этого они часто прибегают к Python (который он называет "интерпретируемым игрушечным языком"), что, только усложняет процесс.
Проще говоря, для сборки проектов на C/C++ приходится использовать внешние инструменты и скрипты, вместо того чтобы решать эти задачи средствами самих языков.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#видео
🤓 Закон Линуса о написании читаемого кода
Видео объясняет лучшие практики написания читаемого кода: предпочтение 8-символьным отступам, избегание излишней вложенности, правильное разбиение длинных строк (особенно логов), соотношение длины функции к её сложности и необходимость писать код, понятный без комментариев, вместо объяснения его работы в них.
📱 Смотреть видео
👉 Новости 👉 Платформа
Видео объясняет лучшие практики написания читаемого кода: предпочтение 8-символьным отступам, избегание излишней вложенности, правильное разбиение длинных строк (особенно логов), соотношение длины функции к её сложности и необходимость писать код, понятный без комментариев, вместо объяснения его работы в них.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#Собес
🤔 Что такое динамическая структура данных?
Динамическая структура данных изменяет свой размер во время работы программы, что позволяет эффективно использовать память. В отличие от статических структур данных, динамические могут расти или уменьшаться по мере необходимости.
👉 Новости 👉 Платформа
Динамическая структура данных изменяет свой размер во время работы программы, что позволяет эффективно использовать память. В отличие от статических структур данных, динамические могут расти или уменьшаться по мере необходимости.
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
#полезное
😎 Олды здесь
Allegro –- олдскульная библиотека для C++ (с 1990-х), чтобы писать простые 2D-игры: аркады, платформеры. Всё вручную — графика, звук, ввод.
Она облегчает работу с графикой, звуком, вводом и таймингами, предоставляя кроссплатформенный API.
Сейчас её редко используют в крупных проектах, так как есть более современные движки вроде SDL, SFML, Godot, Unity
Но она до сих пор жива — https://liballeg.org/index.html
👉 Новости 👉 Платформа
Allegro –- олдскульная библиотека для C++ (с 1990-х), чтобы писать простые 2D-игры: аркады, платформеры. Всё вручную — графика, звук, ввод.
Она облегчает работу с графикой, звуком, вводом и таймингами, предоставляя кроссплатформенный API.
Сейчас её редко используют в крупных проектах, так как есть более современные движки вроде SDL, SFML, Godot, Unity
Но она до сих пор жива — https://liballeg.org/index.html
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👍 SGCL — это библиотека управления памятью для C++
Разработанная для обеспечения безопасного и эффективного управления памятью без накладных расходов, обычно связанных с методами сборки мусора.
Она предоставляет умные указатели с полным отслеживанием, аналогичные shared_ptr, но с дополнительными механизмами автоматической сборки мусора и оптимизации.
🟠 Поддержка циклов владения
🟠 SGCL разработан с учетом стандартов C++17 и выше, обеспечивая совместимость с современными практиками программирования.
🟠 Простота использования
Ознакомиться
👉 Новости 👉 Платформа
Разработанная для обеспечения безопасного и эффективного управления памятью без накладных расходов, обычно связанных с методами сборки мусора.
Она предоставляет умные указатели с полным отслеживанием, аналогичные shared_ptr, но с дополнительными механизмами автоматической сборки мусора и оптимизации.
Ознакомиться
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6
#Собес
🤔 Что такое стек (stack) в С?
Стек - это структура данных, работающая по принципу LIFO (Last In, First Out), что означает, что последний добавленный элемент удаляется первым. Доступ к
элементам возможен только с вершины стека. Основные операции:
👉 Новости 👉 Платформа
Стек - это структура данных, работающая по принципу LIFO (Last In, First Out), что означает, что последний добавленный элемент удаляется первым. Доступ к
элементам возможен только с вершины стека. Основные операции:
push ( ) - добавление элемента в стек.pop ( ) - удаление элемента из стека.Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
🤔 Что каждый разработчик должен знать о вычислениях на GPU
Статья предоставляет введение в архитектуру и вычислительные возможности графических процессоров (GPU). Автор отмечает, что, в отличие от центральных процессоров (CPU), которые оптимизированы для последовательного выполнения команд с низкой задержкой, GPU разработаны для массового параллелизма и высокой пропускной способности, что делает их особенно эффективными для задач, требующих одновременной обработки большого объема данных, таких как графика, численные вычисления и глубокое обучение.
Ознакомиться
👉 Новости 👉 База вопросов
Статья предоставляет введение в архитектуру и вычислительные возможности графических процессоров (GPU). Автор отмечает, что, в отличие от центральных процессоров (CPU), которые оптимизированы для последовательного выполнения команд с низкой задержкой, GPU разработаны для массового параллелизма и высокой пропускной способности, что делает их особенно эффективными для задач, требующих одновременной обработки большого объема данных, таких как графика, численные вычисления и глубокое обучение.
Ознакомиться
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
#ЛитКод
Задача: 711. Number of Distinct Islands II
Вам дана двоичная матричная сетка m x n. Остров - это группа 1 (представляющая сушу), соединенных в четырех направлениях (горизонтальном или вертикальном). Можно предположить, что все четыре края сетки окружены водой. Остров считается одинаковым с другим, если они имеют одинаковую форму, или имеют одинаковую форму после поворота (только на 90, 180 или 270 градусов) или отражения (влево/вправо или вверх/вниз). Верните количество разных островов.
Пример:
👨💻 Алгоритм:
1⃣ Пройдите по каждому элементу матрицы, если найдена земля (1), выполните DFS для обнаружения всех связанных с этим островом земель и сохраните форму острова.
2⃣ Нормализуйте форму острова, применив все возможные повороты и отражения, чтобы найти каноническую форму.
3⃣ Используйте множество для хранения всех уникальных канонических форм и верните размер этого множества.
😎 Решение:
👉 Новости 👉 База вопросов
Задача: 711. Number of Distinct Islands II
Вам дана двоичная матричная сетка m x n. Остров - это группа 1 (представляющая сушу), соединенных в четырех направлениях (горизонтальном или вертикальном). Можно предположить, что все четыре края сетки окружены водой. Остров считается одинаковым с другим, если они имеют одинаковую форму, или имеют одинаковую форму после поворота (только на 90, 180 или 270 градусов) или отражения (влево/вправо или вверх/вниз). Верните количество разных островов.
Пример:
Input: grid = [[1,1,0,0,0],[1,0,0,0,0],[0,0,0,0,1],[0,0,0,1,1]]
Output: 1
class Solution {
public:
int numDistinctIslands2(vector<vector<int>>& grid) {
unordered_set<string> uniqueIslands;
for (int i = 0; i < grid.size(); ++i) {
for (int j = 0; j < grid[0].size(); ++j) {
if (grid[i][j] == 1) {
vector<pair<int, int>> shape;
dfs(grid, i, j, i, j, shape);
uniqueIslands.insert(normalize(shape));
}
}
}
return uniqueIslands.size();
}
private:
void dfs(vector<vector<int>>& grid, int i, int j, int baseI, int baseJ, vector<pair<int, int>>& shape) {
if (i < 0 || i >= grid.size() || j < 0од Задача
:
711. Number ofgrid[i][j]
== 0) {
return;
}
grid[i][j] = 0;
shape.emplace_back(i - baseI, j - baseJ);
dfs(grid, i + 1, j, baseI, baseJ, shape);
dfs(grid, i - 1, j, baseI, baseJ, shape);
dfs(grid, i, j + 1, baseI, baseJ, shape);
dfs(grid, i, j - 1, baseI, baseJ, shape);
}
string normalize(vector<pair<int, int>>& shape) {
vector<vector<pair<int, int>>> shapes(8);
for (auto& p : shape) {
int x = p.first, y = p.second;
shapes[0].emplace_back(x, y);
shapes[1].emplace_back(x, -y);
shapes[2].emplace_back(-x, y);
shapes[3].emplace_back(-x, -y);
shapes[4].emplace_back(y, x);
shapes[5].emplace_back(y, -x);
shapes[6].emplace_back(-y, x);
shapes[7].emplace_back(-y, -x);
}
for (auto& s : shapes) {
sort(s.begin(), s.end());
}
string minShape = to_string(shapes[0][0].first) + "," + to_string(shapes[0][0].second);
for (auto& s : shapes) {
string sStr;
for (auto& p : s) {
sStr += to_string(p.first) + "," + to_string(p.second) + ";";
}
minShape = min(minShape, sStr);
}
return minShape;
}
};Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
#полезное
🤓 Всё понятным языком
Нашел неплохой ресурс для изучения основных концепций машинного обучения с помощью интерактивных визуализаций
Он включает интерактивные статьи по нейронным сетям, линейная регрессия, обучение с подкреплением и деревья решений, делая сложные идеи более доступными и понятными.
Смотри тут
👉 Новости 👉 База вопросов
Нашел неплохой ресурс для изучения основных концепций машинного обучения с помощью интерактивных визуализаций
Он включает интерактивные статьи по нейронным сетям, линейная регрессия, обучение с подкреплением и деревья решений, делая сложные идеи более доступными и понятными.
Смотри тут
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#Собес
🤔 Что такое цикл (lоор) в С?
Цикл в С - это конструкция, позволяющая повторять выполнение кода, пока выполняется заданное условие. В С есть три основных типа циклов:
👉 Новости 👉 Платформа
Цикл в С - это конструкция, позволяющая повторять выполнение кода, пока выполняется заданное условие. В С есть три основных типа циклов:
for - используется, когда известно количество итераций.while - выполняется, пока условие истинно.do while - выполняется хотя бы один раз, затем проверяет условие.Please open Telegram to view this post
VIEW IN TELEGRAM
#новости
😬 Создатель C++ бьет тревогу из-за "серьезных атак" на язык программирования.
Бьярне Страуструп, создатель C++, обратился к сообществу с призывом защитить язык, который в последние годы подвергается критике со стороны кибербезопасности и технических экспертов из-за проблем с ручным управлением памяти. C и C++ полагаются на него, что приводит к ошибкам выхода за пределы чтения и записи, которые, в свою очередь становятся источником для уязвимостей и составляют большинство проблем в крупных проектах.
Страуструп признает, что C++ нуждается в срочных мерах для улучшения безопасности, особенно в свете рекомендаций правительственных агентств, которые рекомендуют отказаться от использования "небезопасных" языков к 2026 году. Он предлагает использовать фреймворк "Profiles", который может помочь в решении этих проблем, но скептики считают, что это решение не будет готово вовремя.
theregister.com
👉 Новости 👉 База вопросов
Бьярне Страуструп, создатель C++, обратился к сообществу с призывом защитить язык, который в последние годы подвергается критике со стороны кибербезопасности и технических экспертов из-за проблем с ручным управлением памяти. C и C++ полагаются на него, что приводит к ошибкам выхода за пределы чтения и записи, которые, в свою очередь становятся источником для уязвимостей и составляют большинство проблем в крупных проектах.
Страуструп признает, что C++ нуждается в срочных мерах для улучшения безопасности, особенно в свете рекомендаций правительственных агентств, которые рекомендуют отказаться от использования "небезопасных" языков к 2026 году. Он предлагает использовать фреймворк "Profiles", который может помочь в решении этих проблем, но скептики считают, что это решение не будет готово вовремя.
theregister.com
Please open Telegram to view this post
VIEW IN TELEGRAM
The Register
C++ creator calls for help to defend programming language from 'serious attacks'
Bjarne Stroustrup wants standards body to respond to memory-safety push as Rust monsters lurk at the door
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
🤯 Рендерер VoxelSpace на старом Atari ST с 1 МБ памяти и процессором на 8 МГц, поддерживающем всего 16 цветов достиг впечатляющих результатов по оптимизации.
Разработчики потратили много времени на оптимизацию, используя C и встроенный m68k-ассемблер.
Недавно получилось уменьшить использование CRT, благодаря чему исполняемый файл стал всего 13430 байт, освободив почти 200 КБ оперативной памяти.☕️
Это улучшение значительно оптимизирует работу программы, позволяя использовать больше ресурсов системы для других задач.
Исходный код и двоичные файлы доступны на Гитхаб
👉 Новости 👉 База вопросов
Разработчики потратили много времени на оптимизацию, используя C и встроенный m68k-ассемблер.
Недавно получилось уменьшить использование CRT, благодаря чему исполняемый файл стал всего 13430 байт, освободив почти 200 КБ оперативной памяти.
Это улучшение значительно оптимизирует работу программы, позволяя использовать больше ресурсов системы для других задач.
Исходный код и двоичные файлы доступны на Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1