🔮 std::exchange
std::exchange — функция добавленная в C++14. Она назначает новое значение первому аргументу, которое берёт из второго и возвращает старое значение первого аргумента
❗Если есть конструктор перемещения, то значение будет перемещено и не будет лишнего копирования
❗В отличие от std::swap, во второй аргумент ничего не перемешается, он остаётся без изменений
std::exchange — функция добавленная в C++14. Она назначает новое значение первому аргументу, которое берёт из второго и возвращает старое значение первого аргумента
❗Если есть конструктор перемещения, то значение будет перемещено и не будет лишнего копирования
❗В отличие от std::swap, во второй аргумент ничего не перемешается, он остаётся без изменений
💣 Подборка крутых докладов по С++ за 2023 год
• Статья представляет подборку лучших докладов по С++ с прошлого сезона конференций
•Доклады охватывают различные темы, включая применение и развитие современного С++, безопасность кода и личностное развитие программиста
• Обсуждаются новые возможности C++23, которые меняют и улучшают работу программиста
• Рассматривается эволюция C++ и важность совместимости для дальнейшего успешного развития языка
👉 Ссылка
• Статья представляет подборку лучших докладов по С++ с прошлого сезона конференций
•Доклады охватывают различные темы, включая применение и развитие современного С++, безопасность кода и личностное развитие программиста
• Обсуждаются новые возможности C++23, которые меняют и улучшают работу программиста
• Рассматривается эволюция C++ и важность совместимости для дальнейшего успешного развития языка
👉 Ссылка
🔮 Семантические процессы в C++
В языке C++ есть синтаксис и семантика. Когда мы говорим о синтаксисе, мы говорим о контекстно-независимых конструкциях, которые просто что-то означают. Например, if — это всегда if
Но когда мы говорим о семантике, мы сталкиваемся с необходимостью для компилятора что-то сделать или что-то выяснить: разрешить имя, инстанцировать шаблон, вывести тип, вычислить константное выражение. Можно сказать что в каждый такой момент мы стартуем некий процесс, развивающийся по своим правилам
Представляю доклад посвящен описанию взаимодействующих семантических процессов в языке, как с точки зрения внутренностей компилятора, так и с точки зрения стандарта языка
В языке C++ есть синтаксис и семантика. Когда мы говорим о синтаксисе, мы говорим о контекстно-независимых конструкциях, которые просто что-то означают. Например, if — это всегда if
Но когда мы говорим о семантике, мы сталкиваемся с необходимостью для компилятора что-то сделать или что-то выяснить: разрешить имя, инстанцировать шаблон, вывести тип, вычислить константное выражение. Можно сказать что в каждый такой момент мы стартуем некий процесс, развивающийся по своим правилам
Представляю доклад посвящен описанию взаимодействующих семантических процессов в языке, как с точки зрения внутренностей компилятора, так и с точки зрения стандарта языка
😱 Что такое ошибка сегментации?
Ошибка сегментации (или segmentation fault) — вид ошибок связанный с обращением к памяти, которая не принадлежит процессу. Это вспомогательный механизм, который не дает вам «испортить» память и внедрить трудноотлаживаемые ошибки памяти. Когда вы получаете segfault, вы знаете, что делаете что-то не так с памятью — обращаетесь к переменной, которая уже была освобождена, записываете в часть памяти, доступную только для чтения, и т. д. Ошибка сегментации по сути одинакова в большинстве языков, позволяющих работать с памятью, принципиальной разницы между ошибками сегментации в C и C++ нет
Ошибка сегментации (или segmentation fault) — вид ошибок связанный с обращением к памяти, которая не принадлежит процессу. Это вспомогательный механизм, который не дает вам «испортить» память и внедрить трудноотлаживаемые ошибки памяти. Когда вы получаете segfault, вы знаете, что делаете что-то не так с памятью — обращаетесь к переменной, которая уже была освобождена, записываете в часть памяти, доступную только для чтения, и т. д. Ошибка сегментации по сути одинакова в большинстве языков, позволяющих работать с памятью, принципиальной разницы между ошибками сегментации в C и C++ нет
Forwarded from Библиотека собеса по C++ | вопросы с собеседований
🧨 Как очистить stringstream?
Для очистки содержимого строкового потока можно использовать
или
что может быть более эффективно, из-за того что не вызываем конструктор std::string(const char*)
Для очистки содержимого строкового потока можно использовать
m.str("");
или
m.str(std::string());
что может быть более эффективно, из-за того что не вызываем конструктор std::string(const char*)
🍔 nocc — распределенный компилятор для гигантских проектов на C++
Известно, что С++ проекты очень долго компилируются. ccache может спасти локально, но современный деплой состоит из изолированных контейнеров, TeamCity, билд-агентов и прочего — там ccache не поможет
Есть такая вещь, как distcc — распределенная компиляция, ускорение за счет множества серверных нод
nocc — аналог distcc, только значительно более быстрый, и это дало им колоссальный прирост скорости сборки в реальных условиях
В докладе рассказывается про архитектуру, про особенности имплементации, про отличия от distcc и, конечно же, как использовать nocc в ваших С++ проектах
🔮 Содержание
• Распределенная компиляция PHP
• Как работает распределенная компиляция
• Компиляция плюсовых файлов на сервере
• Зеркалирование файловой структуры клиента на сервере
• Кэширование и оптимизация
• Заголовки и метаформатирование
• Применение вне КПП
• Проблемы с сервером
• Обновление серверов
• Обсуждение оптимизации компиляции
Известно, что С++ проекты очень долго компилируются. ccache может спасти локально, но современный деплой состоит из изолированных контейнеров, TeamCity, билд-агентов и прочего — там ccache не поможет
Есть такая вещь, как distcc — распределенная компиляция, ускорение за счет множества серверных нод
nocc — аналог distcc, только значительно более быстрый, и это дало им колоссальный прирост скорости сборки в реальных условиях
В докладе рассказывается про архитектуру, про особенности имплементации, про отличия от distcc и, конечно же, как использовать nocc в ваших С++ проектах
🔮 Содержание
• Распределенная компиляция PHP
• Как работает распределенная компиляция
• Компиляция плюсовых файлов на сервере
• Зеркалирование файловой структуры клиента на сервере
• Кэширование и оптимизация
• Заголовки и метаформатирование
• Применение вне КПП
• Проблемы с сервером
• Обновление серверов
• Обсуждение оптимизации компиляции
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
🎭 7 типов программистов, которых вы встретите на собеседовании
Осторожно! Данная статья носит шуточный характер и не преследует цели обидеть кого-либо. Все ситуации выдуманы, а совпадения — случайны.
🔗 Читать статью
🔗 Зеркало
Осторожно! Данная статья носит шуточный характер и не преследует цели обидеть кого-либо. Все ситуации выдуманы, а совпадения — случайны.
🔗 Читать статью
🔗 Зеркало
Forwarded from Библиотека задач по C++ | тесты, код, задания
Forwarded from Библиотека задач по C++ | тесты, код, задания
Forwarded from Библиотека собеса по C++ | вопросы с собеседований
🔮 Что такое обрезка объектов?
Обрезка объектов (или object slicing) — это возможность присвоить объект класса-наследника экземпляру базового класса. Называется обрезкой, потому что часть информации исчезает (обрезается)
❗️В примере информация об переменной der_var исчезает и её уже никак не восстановить
❗️Для решение проблемы можно использовать указатель или ссылку, тогда новый объект не создаётся, а мы просто пользуемся наследником как базовым
Обрезка объектов (или object slicing) — это возможность присвоить объект класса-наследника экземпляру базового класса. Называется обрезкой, потому что часть информации исчезает (обрезается)
class Base {
int base_var;
};
class Derived: public Base {
int der_var;
};
int main () {
Base base;
Derived der = base;
}
❗️В примере информация об переменной der_var исчезает и её уже никак не восстановить
❗️Для решение проблемы можно использовать указатель или ссылку, тогда новый объект не создаётся, а мы просто пользуемся наследником как базовым