SQLiteCpp — это тонкая обертка вокруг SQLite, одной из самых популярных легковесных реляционных баз данных. Библиотека предоставляет удобный и безопасный интерфейс для работы с SQLite в C++, облегчая взаимодействие с базами данных.
•
Если вам нужно встроить простую, но мощную базу данных в ваше C++ приложение, SQLiteCpp — это то, что вам нужно.Please open Telegram to view this post
VIEW IN TELEGRAM
С++26 и рефлексия: что нового и как это изменит программирование?
🚀На последней встрече ISO C++ в Софии обсудили долгожданные новшества в стандарте С++26, и они реально впечатляют. Одно из самых ожидаемых нововведений — рефлексия на уровне компиляции. Это значит, что теперь можно будет работать с типами и метаданными прямо в коде, без жертвования производительностью.
Но это не всё: новые возможности для параллельных алгоритмов, улучшенная безопасность и ещё множество фишек, которые точно изменят представление о C++. Городские сервисы Яндекса собрали и структурировали всё самое важное со встречи. Такое мы читаем!
Реклама. ООО «ЯНДЕКС», ИНН 7736207543
🚀На последней встрече ISO C++ в Софии обсудили долгожданные новшества в стандарте С++26, и они реально впечатляют. Одно из самых ожидаемых нововведений — рефлексия на уровне компиляции. Это значит, что теперь можно будет работать с типами и метаданными прямо в коде, без жертвования производительностью.
Но это не всё: новые возможности для параллельных алгоритмов, улучшенная безопасность и ещё множество фишек, которые точно изменят представление о C++. Городские сервисы Яндекса собрали и структурировали всё самое важное со встречи. Такое мы читаем!
Реклама. ООО «ЯНДЕКС», ИНН 7736207543
PEGTL (Parsing Expression Grammar Template Library) — это библиотека для создания синтаксических анализаторов (парсеров) на C++. Она предоставляет мощные инструменты для определения грамматик и разбора текстов, что делает ее отличным выбором для создания языков программирования и обработки текстов.
•
PEGTL позволяет создавать сложные парсеры с минимальными усилиями, обеспечивая при этом высокую производительность и гибкость.Please open Telegram to view this post
VIEW IN TELEGRAM
Алгоритм prev_permutation
Алгоритм переставляет элементы так, чтобы получилась предыдущая в лексикографическом порядке перестановка. Можно применять не только к векторам, но и к строкам (как и многие другие алгоритмы).
Метод возвращает true, если удалось построить предыдущую в лексикографическом порядке перестановку. Если же первоначальная перестановка уже была минимальной в лексикографическом порядке, то метод генерирует максимальную в лексикографическом порядке перестановку и возвращает false.
Алгоритм переставляет элементы так, чтобы получилась предыдущая в лексикографическом порядке перестановка. Можно применять не только к векторам, но и к строкам (как и многие другие алгоритмы).
Метод возвращает true, если удалось построить предыдущую в лексикографическом порядке перестановку. Если же первоначальная перестановка уже была минимальной в лексикографическом порядке, то метод генерирует максимальную в лексикографическом порядке перестановку и возвращает false.
#вопросы_с_собеседований
В чем проблема следующего фрагмента?
Из спецификации (C++11 §5.3.5/3):
Если статический тип подлежащего удалению объекта отличается от его динамического типа, статический тип должен быть базовым классом динамического типа подлежащего удалению объекта и иметь виртуальный деструктор или поведение undefined.
В чем проблема следующего фрагмента?
Из спецификации (C++11 §5.3.5/3):
Если статический тип подлежащего удалению объекта отличается от его динамического типа, статический тип должен быть базовым классом динамического типа подлежащего удалению объекта и иметь виртуальный деструктор или поведение undefined.
#вопросы_с_собоседований
В чем различия между delete и delete[]?
delete предназначен для уничтожения объектов, память под которые выделена при помощи new(). delete[] для объектов выделенных при помощи оператора new[]().
При неправильном использовании оператора delete (например, delete вместо delete[]) результат будет: undefined behavior.
В чем различия между delete и delete[]?
delete предназначен для уничтожения объектов, память под которые выделена при помощи new(). delete[] для объектов выделенных при помощи оператора new[]().
При неправильном использовании оператора delete (например, delete вместо delete[]) результат будет: undefined behavior.
Snake – искусственный интеллект для игры «Змейка»
Цель змеи – постоянно есть пищу и как можно скорее заполнить карту своим телом
Первоначально проект был написан на C++. Теперь он был переписан на Python с удобным графическим интерфейсом для пользователя
https://github.com/chuyangliu/snake
Цель змеи – постоянно есть пищу и как можно скорее заполнить карту своим телом
Первоначально проект был написан на C++. Теперь он был переписан на Python с удобным графическим интерфейсом для пользователя
https://github.com/chuyangliu/snake
GitHub
GitHub - chuyangliu/snake: Artificial intelligence for the Snake game.
Artificial intelligence for the Snake game. Contribute to chuyangliu/snake development by creating an account on GitHub.
•
auto-типизированные переменные выводятся компилятором на основе типа их инициализатора.•
Чрезвычайно полезно с точки зрения удобочитаемости, особенно для сложных типов:// std::vector<int>::const_iterator cit = v.cbegin();
auto cit = v.cbegin(); // альтернатива
// std::shared_ptr<vector<uint32_t>> demo_ptr(new vector<uint32_t>(0);
auto demo_ptr = make_shared<vector<uint32_t>>(0); // альтернатива
•
Функции также могут выводить тип возвращаемого значения с помощью auto
. В C++11 тип возвращаемого значения должен быть указан либо явно, либо с помощью decltype
, например:template <typename X, typename Y>
auto add(X x, Y y) -> decltype(x + y)
{
return x + y;
}
add(1, 2); // == 3
add(1, 2.0); // == 3.0
add(1.5, 1.5); // == 3.0
•
Приведенная выше форма определения возвращаемого типа называется trailing return type, т.е. -> return-type
.Please open Telegram to view this post
VIEW IN TELEGRAM
Модули - это система сборки и организации кода, представленная в C++20.
•
Они улучшают компиляцию и организацию кода, предоставляя более четкий и эффективный способ управления зависимостями.
•
Модули заменяют использование препроцессорных директив #include, улучшая время компиляции и предотвращая проблемы с зависимостями и макросами.
•
Модули значительно сокращают время компиляции по сравнению с традиционными заголовочными файлами, так как они компилируются только один раз.
•
Модули предотвращают проблемы, связанные с макросами и конфликтами имен, поскольку они предоставляют четкие границы и изолированные области видимости.
•
Модули упрощают управление зависимостями и организацию кода, что делает проекты более поддерживаемыми и масштабируемыми.Please open Telegram to view this post
VIEW IN TELEGRAM