uz
Feedback
C++ geek

C++ geek

Kanalga Telegram’da o‘tish

Учим C/C++ на примерах

Ko'proq ko'rsatish
3 540
Obunachilar
-224 soatlar
-177 kunlar
-2930 kunlar
Postlar arxiv
forward_list::unique() в C++ STL forward_list::unique() — это встроенная функция в C++ STL, которая удаляет все последователь
forward_list::unique() в C++ STL forward_list::unique() — это встроенная функция в C++ STL, которая удаляет все последовательные повторяющиеся элементы из forward_list. Для сравнения используется бинарный предикат. ➡️ @cpp_geek

Вычисление количества цифр числа Чтобы вычислить количество цифр в числе, вместо цикла мы можем эффективно использовать log.
Вычисление количества цифр числа Чтобы вычислить количество цифр в числе, вместо цикла мы можем эффективно использовать log. В нашем примере мы получаем, что количество цифр числа 2468 равно 4. ➡️ @cpp_geek

Алгоритм rotate Меняет местами элементы в диапазоне [first, last) таким образом, что элемент n_first становится первым в ново
Алгоритм rotate Меняет местами элементы в диапазоне [first, last) таким образом, что элемент n_first становится первым в новом диапазоне, а n_first-1 — последним. Параметры: first, last - диапазон элементов для изменения их порядка. n_first - элемент, который должен стать первым в новом диапазоне. ➡️ @cpp_geek

Алгоритм adjacent_find Ищет первую пару одинаковых соседних элементов в диапазоне, ограниченном итераторами [first, last). Ес
Алгоритм adjacent_find Ищет первую пару одинаковых соседних элементов в диапазоне, ограниченном итераторами [first, last). Если соседние дубликаты найдены, то алгоритм возвращает однонаправленный итератор, указывающий на первый элемент пары, в противном случае возвращается last. ➡️ @cpp_geek

Узнаем время работы программы на С++ Для того, чтобы найти время работы программы, нужно воспользоваться функцией clock(). Пр
Узнаем время работы программы на С++ Для того, чтобы найти время работы программы, нужно воспользоваться функцией clock(). Прототип функции clock() находится в заголовочном файле <ctime>, который нужно подключить. Функция clock() возвращает значение времени в миллисекундах (1с = 1000млс). Причём отсчёт времени начинается с момента запуска программы. ➡️ @cpp_geek

Макросы и функции При первом знакомстве макросы могут показаться обычными вызовами функций. Конечно, у них немного странный с
Макросы и функции При первом знакомстве макросы могут показаться обычными вызовами функций. Конечно, у них немного странный синтаксис, но они «ведут себя» как обычные функции. Тогда в чём разница? Макрос можно условно назвать функцией обработки и замены программного кода: после сборки программы макросы заменяются макроопределениями. На картинке показан код на Си. ➡️ @cpp_geek

Алгоритм count_if Алгоритм count_if выполняет подсчет количества выполнений условия в последовательности. ➡️ @cpp_geek
Алгоритм count_if Алгоритм count_if выполняет подсчет количества выполнений условия в последовательности. ➡️ @cpp_geek

Сколько раз будет выполняться этот цикл? Еще один вопрос с подвохом с IT-собеседований. Если бы вы сказали 300, а i был объяв
Сколько раз будет выполняться этот цикл? Еще один вопрос с подвохом с IT-собеседований. Если бы вы сказали 300, а i был объявлен как int, вы были бы правы. Но поскольку i объявлен как unsigned char, правильный ответ – зацикливание (бесконечный цикл). Объясняем. Выражение 2 * half_limit будет повышаться до int (на основе правил преобразования C++) и заимеет значение 300. Но так как i – это unsigned char, он пересматривается по 8-битному значению, которое после достижения 255 будет переполняться, поэтому вернется к 0, и цикл будет продолжаться вечно. ➡️ @cpp_geek

Токенизация строки Токенизация строки означает разделение строки относительно некоторого разделителя (разделителей). Есть мно
Токенизация строки Токенизация строки означает разделение строки относительно некоторого разделителя (разделителей). Есть много способов этого добиться. Рассмотрим пример с функцией strtok(). Она разбивает строку по указанным разделителям и должна быть вызвана в цикле, на каждой итерации возвращая следующую часть. В конце возвращает NULL ➡️ @cpp_geek

Проверяем, содержит ли строка только буквы в C++ Мы можем использовать регулярное выражение, чтобы проверить, содержит ли стр
Проверяем, содержит ли строка только буквы в C++ Мы можем использовать регулярное выражение, чтобы проверить, содержит ли строка только буквы. Начиная с C++11, мы можем использовать std::regex_match для сопоставления последовательности с регулярным выражением. ➡️ @cpp_geek

Удаление указателя NULL Удаление указателя NULL не приводит к каким-либо изменениям и ошибкам. ➡️ @cpp_geek
Удаление указателя NULL Удаление указателя NULL не приводит к каким-либо изменениям и ошибкам. ➡️ @cpp_geek

Алгоритм is_sorted_until Используется для определения первого несортированного элемента в диапазоне [first, last). Он возвращ
Алгоритм is_sorted_until Используется для определения первого несортированного элемента в диапазоне [first, last). Он возвращает итератор к первому несортированному элементу в диапазоне, поэтому все элементы между первым и возвращенным итератором сортируются. Его также можно использовать для подсчета общего количества отсортированных элементов в диапазоне. Он определяется внутри файла заголовка. Если весь диапазон отсортирован, он вернет итератор, указывающий на последний. ➡️ @cpp_geek

Возврат нескольких значений из функции Вы можете написать функцию, которая будет возвращать два и более значений, с помощью s
Возврат нескольких значений из функции Вы можете написать функцию, которая будет возвращать два и более значений, с помощью std::tuple и std::tie. ➡️ @cpp_geek

Функция for_each() Функция принимает список в качестве входных данных и применяет пользовательскую функцию к каждому элементу
Функция for_each() Функция принимает список в качестве входных данных и применяет пользовательскую функцию к каждому элементу этого списка. Это полезно, когда нам нужно выполнить одну и ту же операцию со всеми элементами списка. Выше приведен пример, где мы используем функцию для удвоения всех чисел в массиве. ➡️ @cpp_geek

Функция resize Изменяет размер контейнера так, чтобы он содержал n элементов. Если n меньше текущего размера контейнера , сод
Функция resize Изменяет размер контейнера так, чтобы он содержал n элементов. Если n меньше текущего размера контейнера , содержимое сокращается до первых n элементов, удаляя все остальные (и уничтожая их). Если n больше текущего размера контейнера , содержимое расширяется, вставляя в конце столько элементов, сколько необходимо для достижения размера n . Если указан val , новые элементы инициализируются как копии val , в противном случае они инициализируются значением. Если n также больше, чем текущая вместимость контейнера, происходит автоматическое перераспределение выделенного пространства для хранения. ➡️ @cpp_geek

Отличия между указателем и массивом? Массивы создаются в статической памяти или в стеке. Указатели могут указывать на любой т
Отличия между указателем и массивом? Массивы создаются в статической памяти или в стеке. Указатели могут указывать на любой тип в памяти. В массивах можно изменять содержимое, а по указателю не всегда. ➡️ @cpp_geek

Алгоритм unique_copy std::unique используется для удаления дубликатов любого элемента, присутствующего последовательно в диап
Алгоритм unique_copy std::unique используется для удаления дубликатов любого элемента, присутствующего последовательно в диапазоне [первый, последний). Он выполняет эту задачу для всех подгрупп, присутствующих в диапазоне, в котором последовательно присутствует один и тот же элемент. Но что, если мы не хотим изменять исходный диапазон, а просто хотим, чтобы результат std::unique был скопирован в другой контейнер, для этого у нас есть другая функция std::unique_copy() . При этом копируется только первый элемент из каждой последовательной группы эквивалентных элементов в диапазоне [first, last). ➡️ @cpp_geek

this является const указателем Указатель this является неизменяемым указателем. Убедимся это на примере: class Foo { private: int x; public: Foo(int x = 0) { this->x = x; } void change(Foo *foo) { this = foo; } void print() { cout << x << endl; } }; Здесь в методе change мы пытаемся присвоить указателю this новое значение. Попробуем вызвать метод change в методе main: Foo obj (3); Foo *ptr; obj.change(ptr); obj.print(); Если мы запустим код, то получим ошибку компиляции в методе change (lvalue required as left operand of assignment). Компилятор не позволяет нам изменить значение указателя this. ➡️ @cpp_geek

Шаблон Voodoo Вы можете настраивать шаблоны класса под конкретные значения или типы аргументов: так работает специализация ша
Шаблон Voodoo Вы можете настраивать шаблоны класса под конкретные значения или типы аргументов: так работает специализация шаблонов классов C++. Если это рекурсия, можно записывать базовые случаи, а затем определить общий шаблон как рекурсивную комбинацию этих случаев. Больше интересного по ссылке. ➡️ @cpp_geek

Что лучше const или define? Ответ: define - это директива препроцессора, которая не учитывает ни типов, ни областей видимости
Что лучше const или define? Ответ: define - это директива препроцессора, которая не учитывает ни типов, ни областей видимости. Препроцессор вставляет значение везде, где оно используется и создается множество копий 3.14159265359 в объектном коде, константа никогда не порождает больше одной копии этого значения. define трудно отлаживать, потому что у него нет имени, только магическое число, нельзя взять адрес или создать ссылку на это значение. У const есть тип, область видимости, можно взять адрес, создать константную ссылку на эту переменную. Определенно, лучше использовать const, а не define. ➡️ @cpp_geek