decltype
#для_начинающих
decltype
— это ключевое слово в C++, которое используется для определения типа выражения или значения. Оно позволяет вам извлекать тип из выражения во время компиляции, что может быть полезно в ряде ситуаций, таких как определение типа переменных, создание алиасов типов и т.д. decltype
полезен, когда вы хотите, чтобы тип переменной был автоматически выведен на основе типа выражения, с которым вы работаете.decltype
также может быть полезен в более сложных выражениях, включая использование операторов, а также при работе с шаблонами и обобщенным программированием.#для_начинающих
Функция strrchr()
Функция
Параметры функции включают:
Функция
#для_продвинутых
Функция
strrchr()
является частью стандартной библиотеки C и C++. Она используется для поиска последнего вхождения указанного символа в строке, представленной в виде массива символов (строки).Параметры функции включают:
str (const char*):
Указатель на строку, в которой будет выполнен поиск.character (int):
Символ, который вы ищете в строке.Функция
strrchr()
возвращает указатель на последнее вхождение символа character в строке str
. Если символ не найден, то функция возвращает нулевой указатель (nullptr).#для_продвинутых
Параллельный метод сортировки массива std::thread
Алгоритмы последовательных сортировок в прямом виде достаточно сложены для распараллеливания. Поэтому прибегают к стратегии «разделяй и властвуй».
Смотреть статью
Алгоритмы последовательных сортировок в прямом виде достаточно сложены для распараллеливания. Поэтому прибегают к стратегии «разделяй и властвуй».
Смотреть статью
This media is not supported in your browser
VIEW IN TELEGRAM
Волновой алгоритм
Волновой алгоритм — это алгоритм поиска пути, который использует волновое распространение для определения кратчайшего пути от начальной вершины до целевой вершины.
Смотреть статью
Волновой алгоритм — это алгоритм поиска пути, который использует волновое распространение для определения кратчайшего пути от начальной вершины до целевой вершины.
Смотреть статью
Функция std::upper_bound
Функция
Прототип функции
Функция
#для_продвинутых
Функция
std::upper_bound
используется для нахождения позиции, на которой должен быть вставлен элемент в упорядоченном контейнере (например, векторе или массиве) так, чтобы порядок элементов оставался неизменным. Она работает с помощью двоичного поиска и является частью библиотеки стандартных шаблонов C++ (STL).Прототип функции
std::upper_bound
выглядит следующим образом:template <class ForwardIt, class T>Здесь:
ForwardIt upper_bound(ForwardIt first, ForwardIt last, const T& value);
first
— итератор, указывающий на начало диапазона элементов.last
— итератор, указывающий на конец диапазона элементов.value
— значение, для которого вы ищете верхнюю границу.Функция
std::upper_bound
возвращает итератор, указывающий на первый элемент в диапазоне, который больше value
. Если все элементы в диапазоне меньше или равны value
, то она вернет last
.#для_продвинутых
Запрещаем наследование класса
Чтобы запретить наследование от класса, вы можете использовать ключевое слово
Заметьте, что использование
#для_начинающих
Чтобы запретить наследование от класса, вы можете использовать ключевое слово
final
в объявлении класса. Ключевое слово final
указывает, что класс не может быть унаследован. Заметьте, что использование
final
ограничивает только наследование от данного класса, и это не означает, что его методы не могут быть переопределены в производных классах. Если вы хотите запретить переопределение методов класса, вы можете использовать ключевое слово final
перед объявлением метода.#для_начинающих
Многопоточность на C++
Поток исполнения - независимая последовательность выполнения инструкций внутри одного процесса с общей памятью, но собственными регистрами и стеком.
Смотреть статью
Поток исполнения - независимая последовательность выполнения инструкций внутри одного процесса с общей памятью, но собственными регистрами и стеком.
Смотреть статью
reinterpret_cast
Синтаксис
#для_продвинутых
reinterpret_cast
— это один из четырех операторов приведения типов в C++, которые используются для выполнения различных видов приведения типов. reinterpret_cast
позволяет выполнить "пересмотр" типа, что означает, что он преобразует указатель или ссылку на один тип в указатель или ссылку на другой тип без каких-либо проверок или преобразований значений. Он используется для выполнения неявных преобразований между различными типами данных, и может привести к неопределенному поведению, если не используется осторожно.Синтаксис
reinterpret_cast
выглядит так:new_type = reinterpret_cast<new_type>(expression);Где
new_type
— это тип, в который вы хотите преобразовать expression
, и expression
— это значение или выражение, которое вы хотите преобразовать.#для_продвинутых
std::bad_any_cast
#для_продвинутых
std::bad_any_cast
— это исключение (exception) в C++, которое возникает, когда происходит неудачное приведение типа (какие-либо приведения, которые осуществляются с использованием std::any) и тип данных, на который пытается быть приведен объект, не соответствует ожидаемому типу.std::any
— это класс в стандартной библиотеке C++, который позволяет хранить значения разных типов данных внутри одного объекта. Это особенно удобно, когда вам нужно хранить значения разных типов в одной коллекции или передавать их между функциями.#для_продвинутых
Exception safety guarantee
Exception safety guarantee (гарантия безопасности исключений) — это концепция, которая определяет, каким образом объекты и ресурсы управляются во время генерации и обработки исключений, чтобы предотвратить утечки памяти и другие нежелательные побочные эффекты. Exception safety guarantee определяет, как хорошо библиотечные или пользовательские функции справляются с исключениями и обеспечивают корректное состояние программы в случае возникновения исключения.
#для_продвинутых
Exception safety guarantee (гарантия безопасности исключений) — это концепция, которая определяет, каким образом объекты и ресурсы управляются во время генерации и обработки исключений, чтобы предотвратить утечки памяти и другие нежелательные побочные эффекты. Exception safety guarantee определяет, как хорошо библиотечные или пользовательские функции справляются с исключениями и обеспечивают корректное состояние программы в случае возникновения исключения.
#для_продвинутых
Функторы
Функтор — это сокращение от функциональный объект, представляющий собой конструкцию, позволяющую использовать объект класса как функцию. В C++ для определения функтора достаточно описать класс, в котором переопределена операция ().
Выгода функтора состоит в том, что:
а). Его можно параметризовать при создании объекта (перед вызовом) используя конструктор объекта с параметрами/
б). Может создаваться временный объект исключительно на время выполнения функционального вызова.
#для_начинающих
Функтор — это сокращение от функциональный объект, представляющий собой конструкцию, позволяющую использовать объект класса как функцию. В C++ для определения функтора достаточно описать класс, в котором переопределена операция ().
Выгода функтора состоит в том, что:
а). Его можно параметризовать при создании объекта (перед вызовом) используя конструктор объекта с параметрами/
б). Может создаваться временный объект исключительно на время выполнения функционального вызова.
#для_начинающих
std::launch::async
#для_продвинутых
std::launch::async
— это одна из опций, доступных при создании объекта std::launch::async
| std::launch::deferred
в контексте создания потоков с использованием стандартной библиотеки C++ (поддерживается начиная с C++11). Эта опция определяет, каким образом будет запущена функция в новом потоке, когда вы используете std::async
.std::launch::async
указывает на то, что функция должна быть немедленно запущена в отдельном потоке (асинхронно). Это означает, что она выполнится в фоновом режиме и может начать выполнение даже до того, как объект std::future
, возвращаемый std::async
, будет использован для получения результата выполнения функции. В этом случае система управляет тем, как и когда будет создан новый поток.#для_продвинутых
Бьёрн Страуструп: что в C++ надо было сделать по-другому, зачем его учить и совет начинающим программистам
Смотреть статью
Смотреть статью
Tproger
Бьёрн Страуструп: что в C++ надо было сделать по-другому, зачем его учить и совет начинающим программистам
Создатель C++ делится, что бы он поменял в C++, если бы у него была машина времени, зачем учить C++ в 2020 году и что нужно знать начинающему программисту.
Как написать чит для кс го за 30 секунд на c++
В этом видео вы узнаете как написать чит для кс го за 30 секунд на языке программирования c++ и это очень хороший и обучающий туториал по написанию читов для кс го и не только
Смотреть видео
В этом видео вы узнаете как написать чит для кс го за 30 секунд на языке программирования c++ и это очень хороший и обучающий туториал по написанию читов для кс го и не только
Смотреть видео
В чем проблема со следующим кодом?
Поведение не определено, потому что деструктор A не является виртуальным.
class A
{
public:
A() {}
~A(){}
};
class B: public A
{
public:
B():A(){}
~B(){}
};
int main(void)
{
A* a = new B();
delete a;
}
Происхождение и эволюция аллокатора памяти в С
Подсистема памяти - это часть т.н. C Runtime или CRT, отвечающая за работу с памятью. Библиотека CRT служит посредником между прикладной программой и ядром операционной системы. Соответственно, её внешним интерфейсом является “стандартная библиотека С”, внутренний интерфейс специфичен для конкретной ОС.
Смотреть статью
Подсистема памяти - это часть т.н. C Runtime или CRT, отвечающая за работу с памятью. Библиотека CRT служит посредником между прикладной программой и ядром операционной системы. Соответственно, её внешним интерфейсом является “стандартная библиотека С”, внутренний интерфейс специфичен для конкретной ОС.
Смотреть статью
Что такое std::stack?
Хорошей аналогией может быть сравнение со стопкой предметов, например, стопкой тарелок:
— Добавление элемента: Тарелки добавляются сверху.
— Удаление элемента: Тарелки снимаются сверху.
#для_начинающих
std::stack
— это класс, представляющий собой стек, структуру данных, которая работает по принципу LIFO (last-in first-out или "последний вошел — первым вышел"). Это означает, что первым всегда извлекается последний добавленный элемент.Хорошей аналогией может быть сравнение со стопкой предметов, например, стопкой тарелок:
— Добавление элемента: Тарелки добавляются сверху.
— Удаление элемента: Тарелки снимаются сверху.
#для_начинающих