TGViewer
Channel Public Channel
C++ geek

C++ geek

@cpp_geek

Учим C/C++ на примерах
Subscribers
3.53K
Photos
281
Videos
4
Links
53

Showing posts older than #199 · Back to latest

Older Posts 20 shown
Post #198 1.71K
Алгоритм move_backward

Перемещает элементы одного итератора в другой.

Перемещение начинается с последнего элементом в указанном диапазоне и завершается первым элементом в этом диапазоне.

➡️ @cpp_geek
  • 👍 3
  • ⚡ 1
Post #197 1.96K
Что быстрее постфиксные инкрементные операторы или префиксные? Чем отличается их сигнатура?

Префиксные операторы быстрее. В постфиксных операторах производится дополнительная операция сохранения предыдущего состояния объекта, а затем только увеличение на 1, а в префиксном операторе после инкрементирования объекта, сразу возвращается ссылка объект.

Сигнатура их отличается фиктивным параметром int у постфиксного оператора.

➡️ @cpp_geek
  • 👍 7
Post #196 1.75K
Что такое ссылка? Как можно инициализировать ссылку одной или другой переменной в зависимости от условия?

Ответ:
Это другое имя для переменной. Ссылку необходимо инициализировать при объявлении и изменять уже нельзя. С помощью тернарного оператора или с помощью лямбда-функции.

➡️ @cpp_geek
  • 👍 2
Post #195 1.8K
Определение новых исключений

Вы можете определить свои собственные исключения, наследуя и переопределяя функциональные возможности класса исключений . Ниже приведен пример, который показывает, как вы можете использовать класс std :: exception для реализации своего собственного исключения стандартным способом

Это приведет к следующему результату -
MyException caught
C++ Exception

Здесь what() - это открытый метод, предоставляемый классом исключений, и он был переопределен всеми дочерними классами исключений. Это возвращает причину исключения.

➡️ @cpp_geek
  • 👍 4
Post #194 1.56K
Что нужно дописать, чтобы при вызове конструктора перемещения член класса действительно "переместился"?

Нужно дописать std::move в списке инициализации перемещающего конструктора:
A(A&& oth) : str(std::move(oth.str)){ }

Но это гарантирует "перемещение" только в том случае, если у этого объекта, в свою очередь, есть перемещающий конструктор (в данном случае, у std::string он есть).

➡️ @cpp_geek
Post #193 1.61K
Алгоритм prev_permutation

Алгоритм переставляет элементы так, чтобы получилась предыдущая в лексикографическом порядке перестановка. Можно применять не только к векторам, но и к строкам (как и многие другие алгоритмы).

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

➡️ @cpp_geek
  • 👍 1
Post #192 1.74K
Опишите выделение памяти и их отличия?

• Статическое выделение памяти - выделяется редактором связей и существует, пока выполняется программа;
• Память в стеке - автоматическая память. Выделяется при вызове функции для хранения локальных объектов и очищается автоматически после выхода этих объектов из зоны видимости, то есть после возвращения управления из функции;
• Память в куче - динамическая память. Объекты создаются с помощью оператора new и должны быть уничтожены с помощью вызова оператора delete самим программистом.

➡️ @cpp_geek
  • 👍 6
Post #191 2.09K
Как сравнивают bool, int, float, указатели со значением и с нулем?

Ответ на картинке.

➡️ @cpp_geek
  • 👍 5
Post #190 2.25K
Бывает такое, что оператор new не выделяет память?

Ответ:
Да, бывает, когда new передаётся указатель на уже выделенную память (например, с помощью malloc). Это называется placement new. И оператор new без изменения возвращает второй параметр - указатель (void* operator new(std::size_t, void*)). Это используется для создания объектов в выделенном "хранилище" или после malloc.

Важно! В этом случае деструктор нужно вызывать самостоятельно!

➡️ @cpp_geek
  • 👍 8
  • ❤ 1
Post #189 1.77K
Сколько раз будут выполняться циклы внутри программы?

Ответ:
Ответ: в первом случае цикл не выполнится никогда, а во втором случае будет выполняться бесконечно.

Объяснение:
В первом цикле условие прекращения цикла имеет тип беззнакового char, значит, у нас присвоение n 256 вызовет переполнение и n станет равным 0. Цикл превратится в for(unsigned char i = 0; i < 0; ++i), а, значит, условие цикла не выполняется, и мы даже не войдём в тело цикла. Во втором цикле другая ситуация, он превращается в for(unsigned char i = 0; i < 256; ++i), и так как i не может быть больше, чем 255, то условие цикла будет выполняться всегда.

➡️ @cpp_geek
  • 👍 2
Post #188 2.08K
Алгоритм distance

Возвращает расстояние до желаемой позиции от первого итератора. Эта функция очень полезна при поиске нужного нам индекса.

➡️ @cpp_geek
Post #187 1.71K
Объявление классов и функций

В init части цикла for можно объявлять не одни лишь переменные. Здесь также можно разместить классы и функции.

Благодаря этому можно использовать множество переменных с разными типами.

➡️ @cpp_geek
  • 👍 2
Post #186 1.67K
Функция map::at()

Map - это контейнер в STL, который используется для хранения элементов в виде пары ключ-значение. Внутренне элементы map всегда сортируются по ее ключу. Карты в основном реализованы в виде бинарных деревьев поиска.

Функция map::at() используется для возврата ссылки на элемент, связанный с ключом k.

➡️ @cpp_geek
  • 👍 3
Post #185 1.52K
Как сгенерировать pure virtual function call исключение?

Ответ:
Нужно вызвать чисто виртуальный метод в конструкторе родительского класса т.е. до создания дочернего, в котором этот метод реализован. Т.к. современный компилятор не даст это сделать напрямую, то нужно будет использовать промежуточный метод.

➡️ @cpp_geek
  • 🥱 2
Post #184 1.57K
Примеры C++ кода до и после Ranges

Измените несортированный диапазон, чтобы он сохранял только уникальные значения, но в обратном порядке.

➡️ @cpp_geek
Post #183 1.66K
Алгоритм iota

Присваивает каждому элементу в диапазоне [first,last) последовательные значения val, как если бы они увеличивались ++val после записи каждого элемента.

➡️ @cpp_geek
  • 👍 3
Post #182 1.56K
Примеры C++ кода до и после Ranges

Удаляем два наименьших и два самых больших значения диапазона и оставляем остальные, упорядоченные во втором диапазоне.

➡️ @cpp_geek
  • 👍 2
Post #181 1.51K
Алгоритм lower_bound

Возвращает итератор, указывающий на первую позицию в отсортированной последовательности, ограниченной диапазоном [first, last), в которую можно вставить значение value, не нарушая упорядоченности.

➡️ @cpp_geek
  • 🔥 1
Post #180 1.61K
Можно ли использовать ссылку при возвращении из функции? Это хорошо или плохо?

Нельзя:
• никогда нельзя возвращать ссылку на локальную переменную, созданную внутри функции, потому что она разрушится сразу после выхода из функции;
• нельзя возвращать ссылку на выделенную память, потому что её нельзя будет очистить.

Можно:
• когда возвращается константная ссылка на член класса;
• когда Вы пишете оператор <<, оператор = и оператор индексирования, они должны возвращать ссылку на объект.

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

➡️ @cpp_geek
Post #179 1.81K
Лямбда-выражения

В C++ 11 появилась поддержка лямбда-выражений. Они напоминают анонимные функции в JavaScript, их можно сравнить с функциональными объектами без имён. Они захватывают переменные в различных областях видимости в зависимости от их описания, для которого используются компактные синтаксические конструкции. Кроме того, их можно назначать переменным.

Лямбда-выражения — весьма полезный инструмент для тех случаев, когда в коде нужно выполнить какую-нибудь небольшую операцию, но для этого не хочется писать отдельную функцию. Ещё один распространённый пример их использования — создание функций, используемых при сравнении значений.

➡️ @cpp_geek
  • 👍 5
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 →