TGViewer
Channel Public Channel
Senior C++ Developer

Senior C++ Developer

@seniorcpp

Изучаем C++.

По вопросам сотрудничества: @adv_and_pr

РКН: https://www.gosuslugi.ru/snet/676e9a1e4e740947beca35ba
Subscribers
11.6K
Photos
1.5K
Videos
3
Links
641

Showing posts older than #1914 · Back to latest

Older Posts 20 shown
Post #1913 2.85K
Алгоритм is_partitioned

Используется для определения того, разделен ли диапазон [first, last) или нет. Говорят, что диапазон разделен относительно условия, если все элементы, для которых условие оценивается как истинное, предшествуют тем, для которых оно является ложным.
Post #1911 2.69K
Post #1910 2.67K
Алгоритм swap_ranges

Совершает обмен элементами между диапазоном [first1, last1) и другим диапазоном, начинающимся с first2.
Post #1909 2.85K
std::launch::async

std::launch::async — это одна из опций, доступных при создании объекта std::launch::async | std::launch::deferred в контексте создания потоков с использованием стандартной библиотеки C++ (поддерживается начиная с C++11). Эта опция определяет, каким образом будет запущена функция в новом потоке, когда вы используете std::async.

std::launch::async указывает на то, что функция должна быть немедленно запущена в отдельном потоке (асинхронно). Это означает, что она выполнится в фоновом режиме и может начать выполнение даже до того, как объект std::future, возвращаемый std::async, будет использован для получения результата выполнения функции. В этом случае система управляет тем, как и когда будет создан новый поток.

#для_продвинутых
Post #1908 3K
Функторы

Функтор — это сокращение от функциональный объект, представляющий собой конструкцию, позволяющую использовать объект класса как функцию. В C++ для определения функтора достаточно описать класс, в котором переопределена операция ().

Выгода функтора состоит в том, что:
а). Его можно параметризовать при создании объекта (перед вызовом) используя конструктор объекта с параметрами/
б). Может создаваться временный объект исключительно на время выполнения функционального вызова.

#для_начинающих
Post #1907 2.92K
Exception safety guarantee

Exception safety guarantee (гарантия безопасности исключений) — это концепция, которая определяет, каким образом объекты и ресурсы управляются во время генерации и обработки исключений, чтобы предотвратить утечки памяти и другие нежелательные побочные эффекты. Exception safety guarantee определяет, как хорошо библиотечные или пользовательские функции справляются с исключениями и обеспечивают корректное состояние программы в случае возникновения исключения.

#для_продвинутых
Post #1905 2.43K
std::bad_any_cast

std::bad_any_cast — это исключение (exception) в C++, которое возникает, когда происходит неудачное приведение типа (какие-либо приведения, которые осуществляются с использованием std::any) и тип данных, на который пытается быть приведен объект, не соответствует ожидаемому типу.

std::any — это класс в стандартной библиотеке C++, который позволяет хранить значения разных типов данных внутри одного объекта. Это особенно удобно, когда вам нужно хранить значения разных типов в одной коллекции или передавать их между функциями.

#для_продвинутых
Post #1903 2.55K
reinterpret_cast

reinterpret_cast — это один из четырех операторов приведения типов в C++, которые используются для выполнения различных видов приведения типов. reinterpret_cast позволяет выполнить "пересмотр" типа, что означает, что он преобразует указатель или ссылку на один тип в указатель или ссылку на другой тип без каких-либо проверок или преобразований значений. Он используется для выполнения неявных преобразований между различными типами данных, и может привести к неопределенному поведению, если не используется осторожно.

Синтаксис reinterpret_cast выглядит так:

new_type = reinterpret_cast<new_type>(expression);

Где new_type — это тип, в который вы хотите преобразовать expression, и expression — это значение или выражение, которое вы хотите преобразовать.

#для_продвинутых
Post #1901 2.95K
Многопоточность на C++

Поток исполнения - независимая последовательность выполнения инструкций внутри одного процесса с общей памятью, но собственными регистрами и стеком.

Смотреть статью
Post #1900 2.75K
Запрещаем наследование класса

Чтобы запретить наследование от класса, вы можете использовать ключевое слово final в объявлении класса. Ключевое слово final указывает, что класс не может быть унаследован.

Заметьте, что использование final ограничивает только наследование от данного класса, и это не означает, что его методы не могут быть переопределены в производных классах. Если вы хотите запретить переопределение методов класса, вы можете использовать ключевое слово final перед объявлением метода.

#для_начинающих
Post #1898 2.62K
Функция 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.

#для_продвинутых
Post #1897 2.91K
Пишем виртуальную машину (интерпретатор) простого байткода + JIT компиляция

Смотреть статью
Post #1896 2.82K
Волновой алгоритм

Волновой алгоритм — это алгоритм поиска пути, который использует волновое распространение для определения кратчайшего пути от начальной вершины до целевой вершины.

Смотреть статью
Post #1894 2.63K
Параллельный метод сортировки массива std::thread

Алгоритмы последовательных сортировок в прямом виде достаточно сложены для распараллеливания. Поэтому прибегают к стратегии «разделяй и властвуй».

Смотреть статью
Post #1893 2.65K
Функция strrchr()

Функция strrchr() является частью стандартной библиотеки C и C++. Она используется для поиска последнего вхождения указанного символа в строке, представленной в виде массива символов (строки).

Параметры функции включают:

str (const char*): Указатель на строку, в которой будет выполнен поиск.
character (int): Символ, который вы ищете в строке.
Функция strrchr() возвращает указатель на последнее вхождение символа character в строке str. Если символ не найден, то функция возвращает нулевой указатель (nullptr).

#для_продвинутых
Post #1892 2.61K
decltype

decltype — это ключевое слово в C++, которое используется для определения типа выражения или значения. Оно позволяет вам извлекать тип из выражения во время компиляции, что может быть полезно в ряде ситуаций, таких как определение типа переменных, создание алиасов типов и т.д. decltype полезен, когда вы хотите, чтобы тип переменной был автоматически выведен на основе типа выражения, с которым вы работаете.

decltype также может быть полезен в более сложных выражениях, включая использование операторов, а также при работе с шаблонами и обобщенным программированием.

#для_начинающих
Post #1890 2.62K
std::piecewise_construct

std::piecewise_construct — это часть стандартной библиотеки C++ и представляет собой структуру, используемую в конструкторах некоторых контейнеров, таких как std::map и std::unordered_map, для конструирования элементов контейнера с использованием разных конструкторов для ключей и значений.

Обычно std::piecewise_construct используется вместе с методами emplace для вставки новых элементов в контейнер. Это позволяет создавать элементы контейнера, используя конструкторы ключей и значений независимо, что может быть полезным, если ключи и значения требуют разных конструкторов.

#для_продвинутых
Post #1888 2.56K
Функция iswgraph()

Функция iswgraph() является эквивалентом функции isgraph(), но для широких символов. Она проверяет, является ли wc широким символом, принадлежащим классу широких символов «graph».

Класс широких символов «graph» является подклассом широких символов «print».

Будучи подклассом класса широких символов «print», «graph» не пересекается с классом широких символов «cntrl».

Класс широких символов «graph» не пересекается с классом широких символов «space» и, следовательно, также не пересекается с его подклассом «blank».

Класс широких символов «graph» содержит все широкие символы класса «print», за исключением символа пробела. Следовательно, класс содержит широкие символы классов «alnum» и «punct».

#для_начинающих
Post #1886 2.94K
Каковы потенциальные проблемы с использованием множественного наследования в C++ и какие механизмы языка помогают их решить?

Этот вопрос проверяет глубокое понимание кандидатом концепций наследования в C++. Множественное наследование может привести к проблемам, таким как «Алмаз смерти» (проблема, возникающая, когда два класса наследуют от одного базового класса), и усложнение иерархии классов. Ответ должен включать обсуждение таких механизмов языка, как виртуальное наследование и интерфейсы, а также рекомендации по альтернативным подходам, таким как композиция вместо наследования.
Post #1884 3.04K
thread_local

thread_local — это ключевое слово в C++, введенное стандартом C++11, которое позволяет создавать локальные переменные, привязанные к каждому потоку исполнения. Это означает, что каждый поток, выполняющий программу, имеет свою собственную копию переменной, объявленной как thread_local.

#для_начинающих
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →