Сколько в памяти занимает произвольная структура?
Ответ: sizeof всех членов + остаток для выравнивания (по умолчанию выравнивание 4 байта) + sizeof указателя на vtable (если есть виртуальные функции) + указатели на классы предков, от которых было сделано виртуальное наследование (размер указателя * количество классов).
👉 @cpp_geek
Ответ: sizeof всех членов + остаток для выравнивания (по умолчанию выравнивание 4 байта) + sizeof указателя на vtable (если есть виртуальные функции) + указатели на классы предков, от которых было сделано виртуальное наследование (размер указателя * количество классов).
👉 @cpp_geek
🔥8⚡1
Вывод параметра шаблона класса
Довольно странное название функции, да? Её суть в том, что с C++17 компилятор может сам определять типы аргументов конструкторов стандартных классов. Раньше же это работало лишь для функций.
Для того, чтобы осознать удобство этой функции, нужно быть знакомыми с конструкторами классов в C++.
👉 @cpp_geek
Довольно странное название функции, да? Её суть в том, что с C++17 компилятор может сам определять типы аргументов конструкторов стандартных классов. Раньше же это работало лишь для функций.
Для того, чтобы осознать удобство этой функции, нужно быть знакомыми с конструкторами классов в C++.
👉 @cpp_geek
👍5⚡1
Для чего нужен аллокатор и как создать свой собственный аллокатор?
Аллокатор это шаблонный класс, который отвечает за выделение памяти и создание объектов. По умолчанию все контейнера используют std::allocator<T>.
В языке c++ имеется так же возможность написать свой аллокатор. У своего алокатора должно быть такое объявление(см картинку).
👉 @cpp_geek
Аллокатор это шаблонный класс, который отвечает за выделение памяти и создание объектов. По умолчанию все контейнера используют std::allocator<T>.
В языке c++ имеется так же возможность написать свой аллокатор. У своего алокатора должно быть такое объявление(см картинку).
👉 @cpp_geek
👍7⚡1🔥1
Какую проблему решает пространство имён?
Пространство имен — это идентификатор, предоставляющий несколько библиотек. Используется для устранения конфликтов имен, когда имя связано с двумя или более библиотеками. Включает внешние объявления библиотеки с уникальными пространствами имен, что исключает возможность конфликта.
👉 @cpp_geek
Пространство имен — это идентификатор, предоставляющий несколько библиотек. Используется для устранения конфликтов имен, когда имя связано с двумя или более библиотеками. Включает внешние объявления библиотеки с уникальными пространствами имен, что исключает возможность конфликта.
👉 @cpp_geek
⚡2👍2
Сортировка пузырьком
Определите, сколько обменов сделает алгоритм пузырьковой сортировки по возрастанию для данного массива.
Формат входных данных:
На первой строке дано целое число n (1 ≤ n ≤ 1000) – количество элементов в массиве. На второй строке – сам массив. Гарантируется, что все элементы массива – различные целые числа, не превышающие по модулю 10^9.
Формат выходных данных:
Выведите одно число – количество обменов пузырьковой сортировки.
👉 @cpp_geek
Определите, сколько обменов сделает алгоритм пузырьковой сортировки по возрастанию для данного массива.
Формат входных данных:
На первой строке дано целое число n (1 ≤ n ≤ 1000) – количество элементов в массиве. На второй строке – сам массив. Гарантируется, что все элементы массива – различные целые числа, не превышающие по модулю 10^9.
Формат выходных данных:
Выведите одно число – количество обменов пузырьковой сортировки.
👉 @cpp_geek
⚡3😨2
В чем отличие overload и override?
Ответ:
overload - это перегрузка, два одинаковых имени функций с разными принимаемыми аргументами, override - это переопределение (с помощью таблицы виртуальных функций), изменение поведения функции в выведенном классе ( с помощью механизма виртуальных функций).
👉 @cpp_geek
Ответ:
👉 @cpp_geek
👍7
Алгоритмы all_of, any_of и none_of
Начиная с C ++ 11, в STL C ++ добавляются некоторые новые интересные алгоритмы. Эти алгоритмы работают с массивом и полезны для экономии времени во время кодирования и, следовательно, также полезны в конкурентном программировании.
👉 @cpp_geek
Начиная с C ++ 11, в STL C ++ добавляются некоторые новые интересные алгоритмы. Эти алгоритмы работают с массивом и полезны для экономии времени во время кодирования и, следовательно, также полезны в конкурентном программировании.
👉 @cpp_geek
👍6⚡2
Алгоритм includes
Используется для распознавания, существуют ли все числа тз одного контейнера в других контейнерах. Это помогает проверить, является ли набор подмножеством другого набора или нет, учитывая, что набор упорядочен. Ожидается, что элементы будут отсортированы по порядку.
👉 @cpp_geek
Используется для распознавания, существуют ли все числа тз одного контейнера в других контейнерах. Это помогает проверить, является ли набор подмножеством другого набора или нет, учитывая, что набор упорядочен. Ожидается, что элементы будут отсортированы по порядку.
👉 @cpp_geek
👍8❤3⚡2
Алгоритм merge
Объединяет две отсортированные последовательности, ограниченные диапазонами
Шаблон:
➡️ @cpp_geek
Объединяет две отсортированные последовательности, ограниченные диапазонами
[first1,last1)
и [first2,last2)
, в единую отсортированную последовательность, начинающуюся с позиции result.Шаблон:
merge (initer1 beg1, initer1 end1,
initer2 beg2, initer2 end2,
outiter res).
➡️ @cpp_geek
👍4⚡1
Быстрая сортировка
Отсортируйте заданный массив с помощью быстрой сортировки.
Формат входных данных:
Первая строка входных данных содержит одно натуральное число
Формат выходных данных:
Выведите элементы массива в порядке неубывания.
➡️ @cpp_geek
Отсортируйте заданный массив с помощью быстрой сортировки.
Формат входных данных:
Первая строка входных данных содержит одно натуральное число
nn (1 ≤ n ≤ 10^5)
– количество элементов в массиве. В следующей строке находятся элементы массива – n
целых чисел, не превосходящих по абсолютной величине 10^9.Формат выходных данных:
Выведите элементы массива в порядке неубывания.
➡️ @cpp_geek
👍3⚡2
Что лучше const или define?
Ответ:
У
Определенно, лучше использовать const, а не define.
➡️ @cpp_geek
Ответ:
define
- это директива препроцессора, которая не учитывает ни типов, ни областей видимости. Препроцессор вставляет значение везде, где оно используется и создается множество копий 3.14159265359 в объектном коде, константа никогда не порождает больше одной копии этого значения. define трудно отлаживать, потому что у него нет имени, только магическое число, нельзя взять адрес или создать ссылку на это значение.У
const
есть тип, область видимости, можно взять адрес, создать константную ссылку на эту переменную.Определенно, лучше использовать const, а не define.
➡️ @cpp_geek
👍17❤3
Работа с файлами
Для того чтобы прочитать файл понадобится выполнить те же шаги, что и при записи в файл с небольшими изменениями:
1) создать объект класса
2) прочитать файл;
3) закрыть файл.
➡️ @cpp_geek
Для того чтобы прочитать файл понадобится выполнить те же шаги, что и при записи в файл с небольшими изменениями:
1) создать объект класса
ifstream
и связать его с файлом, из которого будет производиться считывание;2) прочитать файл;
3) закрыть файл.
➡️ @cpp_geek
👍5