Задача
В текстовом файле, содержащем текст программы на языке Си, проверить соответствие открывающихся и закрывающихся фигурных скобок { и }. Результат проверки вывести на экран и записать в виде фразы в текстовый файл. Результат работы программы (вывод) поместить в отдельный текстовый файл (например, "out . txt " ), продублировав на экране.
В текстовом файле, содержащем текст программы на языке Си, проверить соответствие открывающихся и закрывающихся фигурных скобок { и }. Результат проверки вывести на экран и записать в виде фразы в текстовый файл. Результат работы программы (вывод) поместить в отдельный текстовый файл (например, "out . txt " ), продублировав на экране.
Программирование на С++ и URI в коде
Вы можете поместить URI в свой код на C++, и компилятор не выдаст ошибку. Любой идентификатор, за которым следует двоеточие, становится меткой goto в С++. Все, что следует за двойным слешем, воспринимается как комментарий. Именно поэтому в приведенном выше коде http – это метка, а //google.com/ – комментарий. Но компилятор может выдать предупреждение, так как заданная метка не используется.
Вы можете поместить URI в свой код на C++, и компилятор не выдаст ошибку. Любой идентификатор, за которым следует двоеточие, становится меткой goto в С++. Все, что следует за двойным слешем, воспринимается как комментарий. Именно поэтому в приведенном выше коде http – это метка, а //google.com/ – комментарий. Но компилятор может выдать предупреждение, так как заданная метка не используется.
Основные концепции библиотеки chrono (C++)
Работа со временем как с безразмерной величиной может приводить к недоразумениям и ошибкам конвертации временных единиц измерения.
Для избежания таких ошибок предусмотрена библиотека chrono (namespace std::chrono). Она была добавлена в C++11 и дорабатывалась в поздних стандартах.
Смотреть статью
Работа со временем как с безразмерной величиной может приводить к недоразумениям и ошибкам конвертации временных единиц измерения.
Для избежания таких ошибок предусмотрена библиотека chrono (namespace std::chrono). Она была добавлена в C++11 и дорабатывалась в поздних стандартах.
Смотреть статью
#вопросы_с_собеседований
Бывает такое, что оператор new не выделяет память?
Ответ:
Да, бывает, когда new передаётся указатель на уже выделенную память (например, с помощью malloc). Это называется placement new. И оператор new без изменения возвращает второй параметр - указатель (void* operator new(std::size_t, void*)). Это используется для создания объектов в выделенном "хранилище" или после malloc.
Важно! В этом случае деструктор нужно вызывать самостоятельно!
Бывает такое, что оператор new не выделяет память?
Ответ:
Важно! В этом случае деструктор нужно вызывать самостоятельно!
Функция resize
Изменяет размер контейнера так, чтобы он содержал n элементов.
Если n меньше текущего размера контейнера , содержимое сокращается до первых n элементов, удаляя все остальные (и уничтожая их).
Если n больше текущего размера контейнера , содержимое расширяется, вставляя в конце столько элементов, сколько необходимо для достижения размера n . Если указан val , новые элементы инициализируются как копии val , в противном случае они инициализируются значением.
Если n также больше, чем текущая вместимость контейнера, происходит автоматическое перераспределение выделенного пространства для хранения.
Изменяет размер контейнера так, чтобы он содержал n элементов.
Если n меньше текущего размера контейнера , содержимое сокращается до первых n элементов, удаляя все остальные (и уничтожая их).
Если n больше текущего размера контейнера , содержимое расширяется, вставляя в конце столько элементов, сколько необходимо для достижения размера n . Если указан val , новые элементы инициализируются как копии val , в противном случае они инициализируются значением.
Если n также больше, чем текущая вместимость контейнера, происходит автоматическое перераспределение выделенного пространства для хранения.
Функция for_each()
Функция принимает список в качестве входных данных и применяет пользовательскую функцию к каждому элементу этого списка. Это полезно, когда нам нужно выполнить одну и ту же операцию со всеми элементами списка.
Выше приведен пример, где мы используем функцию для удвоения всех чисел в массиве.
Функция принимает список в качестве входных данных и применяет пользовательскую функцию к каждому элементу этого списка. Это полезно, когда нам нужно выполнить одну и ту же операцию со всеми элементами списка.
Выше приведен пример, где мы используем функцию для удвоения всех чисел в массиве.
#вопросы_с_собеседований
Напишите базовую реализацию std::shared_ptr.
std::shared_ptr - умный указатель, который позволяет разделять владение объектом между несколькими shared_ptr. Когда последний shared_ptr уничтожается, он автоматически удаляет объект.
Напишите базовую реализацию std::shared_ptr.
Подвох с указателями на Default Subobject
Пожалуй, любой С++ разработчик на Unreal Engine имел дело с созданием Default Subobject в конструкторе. Через этот механизм, в частности, создаются компоненты по-умолчанию для акторов. Казалось бы, какие нюансы могут быть связаны с использованием такого стандартного функционала?
Смотреть статью
Пожалуй, любой С++ разработчик на Unreal Engine имел дело с созданием Default Subobject в конструкторе. Через этот механизм, в частности, создаются компоненты по-умолчанию для акторов. Казалось бы, какие нюансы могут быть связаны с использованием такого стандартного функционала?
Смотреть статью
Находим обратный массив в C++
Один из самых быстрых вариантов обратного массива в C++ предполагает использование двух указателей для итерации по массиву. Это обеспечивает линейную сложность O(n) и примерное время выполнения алгоритма равное O(n/2).
Здесь мы создаем две переменные-указатели, start и end, которые начинаются с первого и последнего элемента соответственно. Затем мы проходим по массиву в цикле while, меняя местами элементы и увеличивая указатель start и уменьшая указатель end на каждой итерации.
Один из самых быстрых вариантов обратного массива в C++ предполагает использование двух указателей для итерации по массиву. Это обеспечивает линейную сложность O(n) и примерное время выполнения алгоритма равное O(n/2).
Здесь мы создаем две переменные-указатели, start и end, которые начинаются с первого и последнего элемента соответственно. Затем мы проходим по массиву в цикле while, меняя местами элементы и увеличивая указатель start и уменьшая указатель end на каждой итерации.
Многопоточность на C++
Поток исполнения - независимая последовательность выполнения инструкций внутри одного процесса с общей памятью, но собственными регистрами и стеком.
Смотреть статью
Поток исполнения - независимая последовательность выполнения инструкций внутри одного процесса с общей памятью, но собственными регистрами и стеком.
Смотреть статью
Генерируем пароли с помощью C++
Эта программа создает константы для допустимых символов в пароле и для длины пароля. Затем она инициализирует генератор случайных чисел и генерирует пять случайных паролей.
Каждый пароль формируется путем выбора случайного символа из всего набора символов. Этот процесс повторяется до достижения желаемой длины пароля.
Эта программа создает константы для допустимых символов в пароле и для длины пароля. Затем она инициализирует генератор случайных чисел и генерирует пять случайных паролей.
Каждый пароль формируется путем выбора случайного символа из всего набора символов. Этот процесс повторяется до достижения желаемой длины пароля.
Генерируем X509 сертификат с OpenSSL C++
В данной статье автор рассказывает, как работать с X509 сертификатом используя OpenSSL 3.0.0 в С++, начиная от генерации своего сертификата и заканчивая его валидацией.
Смотреть статью
В данной статье автор рассказывает, как работать с X509 сертификатом используя OpenSSL 3.0.0 в С++, начиная от генерации своего сертификата и заканчивая его валидацией.
Смотреть статью
Функции вместимости в строках
1. capacity() - функция возвращает ёмкость памяти, выделенную для строки, которая может быть равной или больше, чем размер самой строки. Дополнительное пространство выделяется таким образом, чтобы при добавлении новых символов в строку операции могли выполняться эффективно.
2. resize() - функция изменяет размер строки, его можно увеличивать или уменьшать.
3. length() - функция возвращает длину строки.
4. shrink_to_fit() - функция уменьшает ёмкость памяти строки, делает ее равной минимально возможной. Эта операция полезна для экономии дополнительной памяти, когда мы уверены, что больше не нужно добавлять символы.
1. capacity() - функция возвращает ёмкость памяти, выделенную для строки, которая может быть равной или больше, чем размер самой строки. Дополнительное пространство выделяется таким образом, чтобы при добавлении новых символов в строку операции могли выполняться эффективно.
2. resize() - функция изменяет размер строки, его можно увеличивать или уменьшать.
3. length() - функция возвращает длину строки.
4. shrink_to_fit() - функция уменьшает ёмкость памяти строки, делает ее равной минимально возможной. Эта операция полезна для экономии дополнительной памяти, когда мы уверены, что больше не нужно добавлять символы.
SDL 2.0
Кроссплатформенная 2D-библиотека для написания приложений (как правило, игр). Поддерживает Windows, Mac OS, Linux, Android, Windows Mobile, iOS. Характеризуется быстротой, надёжностью и лёгкостью в эксплуатации. Также в SDL реализованы профессиональные инструменты, предназначенные для работы со звуком, что является большим плюсом при реализации крупных проектов.
Остаётся добавить, что библиотека хорошо интегрируется с OpenGL и комбинируется с wxWidgets.
https://www.libsdl.org/
Кроссплатформенная 2D-библиотека для написания приложений (как правило, игр). Поддерживает Windows, Mac OS, Linux, Android, Windows Mobile, iOS. Характеризуется быстротой, надёжностью и лёгкостью в эксплуатации. Также в SDL реализованы профессиональные инструменты, предназначенные для работы со звуком, что является большим плюсом при реализации крупных проектов.
Остаётся добавить, что библиотека хорошо интегрируется с OpenGL и комбинируется с wxWidgets.
https://www.libsdl.org/
Чтение и отображение изображения в OpenCV с использованием C ++
Как мы видим нам потребовалось включить пространства имен cv, которое содержит все функции, классы и структуры данных OpenCV.
Более подробное описания кода можно найти здесь.
Как мы видим нам потребовалось включить пространства имен cv, которое содержит все функции, классы и структуры данных OpenCV.
Более подробное описания кода можно найти здесь.