ch
Feedback
C++ geek

C++ geek

前往频道在 Telegram

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

显示更多
3 611
订阅者
无数据24 小时
-17
-3630
帖子存档
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

Метод map::emplace_hint Аналогичен методу emplace(), но дополнительно позволяет подсказать позицию вставки с помощью итератор
Метод map::emplace_hint Аналогичен методу emplace(), но дополнительно позволяет подсказать позицию вставки с помощью итератора. Метод возвращает итератор на вставленный элемент или на существующий элемент (вставить элемент с одинаковым ключом нельзя). ➡️ @cpp_geek

Бесконечный цикл Для чего? Когда while(true), while(1), for(;;) и прочие стандартные пути создания цикла кажутся не слишком и
Бесконечный цикл Для чего? Когда while(true), while(1), for(;;) и прочие стандартные пути создания цикла кажутся не слишком информативными, можно использовать подобный макрос. Единственный плюс который он дает — чуть лучшую читаемость кода. ➡️ @cpp_geek

Алгоритм next_permutation next_permutation(first, last) - переставляет элементы так, чтобы получилась следующая в лексикограф
Алгоритм next_permutation next_permutation(first, last) - переставляет элементы так, чтобы получилась следующая в лексикографическом порядке перестановка. Можно применять не только к векторам, но и к строкам (как и многие другие алгоритмы). Метод возвращает true, если удалось построить следующую в лексикографическом порядке перестановку. Если же первоначальная перестановка уже была максимальной в лексикографическом порядке, то метод генерирует минимальную в лексикографическом порядке перестановку и возвращает false.

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

Функция isalpha() Функция isalpha() в С++ проверяет, является ли данный символ буквой или нет. Синтаксис: isalpha(int ch). Во
Функция isalpha() Функция isalpha() в С++ проверяет, является ли данный символ буквой или нет. Синтаксис: isalpha(int ch). Возвращаемое значение: Функция возвращает ненулевое значение, если ch – буква и ноль, если ch не буква. ➡️ @cpp_geek

Алгоритм replace_if Алгоритм replace_if() используется для присвоения нового значения всем элементам в диапазоне [first, last
Алгоритм replace_if Алгоритм replace_if() используется для присвоения нового значения всем элементам в диапазоне [first, last), для которых функция IsOdd возвращает true. ➡️ @cpp_geek

-->«оператор» Вы можете использовать -->«оператор» в цикле while в качестве оператора «Переход к». Например, вы можете печата
-->«оператор» Вы можете использовать -->«оператор» в цикле while в качестве оператора «Переход к». Например, вы можете печатать числа 7 6 5 4 3 2 1 с помощью цикла while следующим образом. Примечание: --> на самом деле это не оператор, а комбинация двух операторов --и >. Вышеупомянутое while то же самое while( (x--) > 0 ), что читается как «уменьшить x на 1, а затем сравнить результат с 0». ➡️ @cpp_geek

Алгоритм move Синтаксис: std :: move (first, last, result); Перемещает элементы диапазона [first,last) в диапазон, начиная с
Алгоритм move Синтаксис: std :: move (first, last, result); Перемещает элементы диапазона [first,last) в диапазон, начиная с позиции result. Значение элементов в [first,last) массиве передается элементам, на которые указывает result. После вызова элементы в диапазоне [first,last) остаются в неопределенном, но допустимом состоянии. ➡️ @cpp_geek

Алгоритм inner_product Вычисляет сумму поэлементного умножения двух диапазонов и добавляет ее к указанному начальному значени
Алгоритм inner_product Вычисляет сумму поэлементного умножения двух диапазонов и добавляет ее к указанному начальному значению либо вычисляет результат обобщенной процедуры, где бинарные операции суммы и умножения заменены на другие указанные бинарные операции. ➡️ @cpp_geek

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

Преобразование типа с плавающей точкой в целочисленный Язык C++ не предоставляет примитивную операцию округления чисел с плав
Преобразование типа с плавающей точкой в целочисленный Язык C++ не предоставляет примитивную операцию округления чисел с плавающей точкой. Самым простым методом преобразования числа с плавающей точкой x в ближайшее целое число n будет оператор(см на картинке). Используя такой метод, если x будет точно посередине между двумя целыми числами, то n будет округлено в большую сторону. Например, 0,5 -> 1; 1,5 -> 2; -0,5 -> 0; -1,5 -> -1. ➡️ @cpp_geek

Неиспользуемые переменные Подобный макрос есть, например, в cocos2d-x, там он называется CC_UNUSED_PARAM. Из недостатков: тео
Неиспользуемые переменные Подобный макрос есть, например, в cocos2d-x, там он называется CC_UNUSED_PARAM. Из недостатков: теоретически, он может работать не на всех компиляторах. Тем не менее, в cocos2d-x он для всех платформ определен абсолютно одинаково. Для чего? Этот макрос позволяет избежать предупреждения о неиспользуемой переменной, а читающему код он как бы говорит: «тот кто писал это — знал, что переменная не используется, все в порядке». ➡️ @cpp_geek

Алгоритм nth_element Перестраивает список таким образом, что элемент в n-й позиции — это тот элемент, который должен быть в э
Алгоритм nth_element Перестраивает список таким образом, что элемент в n-й позиции — это тот элемент, который должен быть в этой позиции, если мы сортируем список. ➡️ @cpp_geek

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

Алгоритм clamp Сравнивает значение с верхней и нижней границей и возвращает ссылку на значение, если оно находится между гран
Алгоритм clamp Сравнивает значение с верхней и нижней границей и возвращает ссылку на значение, если оно находится между границами, или ссылку на верхнюю или нижнюю границу, если значение выше или ниже, соответственно. ➡️ @cpp_geek

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

Указатели с ключевыми словами const и volatile Ключевые слова const и volatile изменяют то, как обрабатываются указатели. con
Указатели с ключевыми словами const и volatile Ключевые слова const и volatile изменяют то, как обрабатываются указатели. const указывает, что данные по указателю не могут быть изменены после инициализации; volatile указывает, что значение может быть изменено действиями, отличными от тех, которые указаны в пользовательском приложении. volatile полезно для объявления объектов в общей памяти, к которым могут обращаться несколько процессов или для глобальных областей данных. ➡️ @cpp_geek