cookie

ما از کوکی‌ها برای بهبود تجربه مرور شما استفاده می‌کنیم. با کلیک کردن بر روی «پذیرش همه»، شما با استفاده از کوکی‌ها موافقت می‌کنید.

avatar

Библиотека собеса по C++ | вопросы с собеседований

Вопросы с собеседований по C++ и ответы на них. Список наших каналов: https://t.me/proglibrary/8353 Учиться у нас: https://proglib.io/w/907158ab Обратная связь: @proglibrary_feedback_bot По рекламе: @proglib_adv Прайс: @proglib_advertising

نمایش بیشتر
پست‌های تبلیغاتی
7 205
مشترکین
+624 ساعت
+307 روز
-1 34830 روز

در حال بارگیری داده...

معدل نمو المشتركين

در حال بارگیری داده...

🧨 Как установить, очистить и переключить один бит? ❗️Установка бита - Используется побитовый оператор OR (|), чтобы установить n-й бит number в 1 значение - Стоит помнить, что сдвиг больше, чем на ширину типа, является неопределенным поведением
typedef unsigned long ulong;

ulong bit_set(ulong number, ulong n) {
    return number | ((ulong)1 << n);
}
❗️Очистка бита - Используется побитовый оператор AND (&) , чтобы установить n-й бит number в 0 значение - Вы должны инвертировать битовую строку с помощью побитового оператора NOT (~) , затем оператор &
ulong bit_clear(ulong number, ulong n) {
    return number & ~((ulong)1 << n);
}
❗️Переключение бита - Используйте побитовый оператор XOR (^) для переключения n-го бита number
ulong bit_toggle(ulong number, ulong n) {
    return number ^ ((ulong)1 << n);
}
❗️Проверка бита - Чтобы проверить бит, сдвиньте number вправо на n бит , затем воспользуйтесь &
bool bit_check(ulong number, ulong n) {
    return (number >> n)& (ulong)1;
}
نمایش همه...
👍 5
🌳 Как объявить интерфейс в C ++? В C++ интерфейсом можно считать класс с чисто виртуальными методами Чисто виртуальный метод - это метод класса, который определяется как виртуальный и которому присваивается значение 0
class ITest
{
    public:
        virtual ~ITest() {}
        virtual void Method() = 0;
};

class MainTest : public ITest
{
    public:
        virtual void Method() override
        {
        }
};
نمایش همه...
👍 6😁 1
🍔 Дополнительный код Дополнительный код (или two's complement) — это умный способ хранения целых чисел, позволяющий очень легко реализовать распространенные математические задачи. В основном используется потому что легко представлять отрицательные числа 🥝 Основные принципы - для нуля используем 0 - для положительных целых чисел используем значения от 1 и до 2 в степени (количество битов-1) минус 1 - для отрицательных чисел инвертируем бинарное представление и добавляем единицу — это и есть дополнительный код 🍎 Примеры (бинарное представление = значение) • 0000 = 0 • 0001 = 1 • 0010 = 2 • 1111 = -1 • 1110 = -2 • 1101 = -3
نمایش همه...
🔥 5👍 1
🍔 В чём разница между std::endl и '\n'? ❗ Единственное существенное различие между std::endl и '\n' в том, что std::endl очищает буфер вывода и результат сразу выводится, а '\n' — это просто символ и сайдэффектов не имеет ❗ Если программа требовательная к ресурсам, то стоит пользоваться '\n' и изредка вызывать std::flush для очистки буфера
نمایش همه...
👍 11
🔮 Что такое обрезка объектов? Обрезка объектов (или object slicing) — это возможность присвоить объект класса-наследника экземпляру базового класса. Называется обрезкой, потому что часть информации исчезает (обрезается)
class Base {
   int base_var;
};

class Derived: public Base {
   int der_var;
};

int main () {
  Base base;
  Derived der = base;
}
❗️В примере информация об переменной der_var исчезает и её уже никак не восстановить ❗️Для решение проблемы можно использовать указатель или ссылку, тогда новый объект не создаётся, а мы просто пользуемся наследником как базовым
نمایش همه...
👍 1
🔮 Что такое обрезка объектов? Обрезка объектов (или object slicing) — это возможность присвоить объект класса-наследника экземпляру базового класса. Называется обрезкой, потому что часть информации исчезает (обрезается) ``` class Base { int base_var; }; class Derived: public Base { int der_var; }; int main () { Base base; Derived der = base; // информация об переменной der_var исчезает и её уже никак не восстановить } ``` ❗️Для решение проблемы можно использовать указатель или ссылку, тогда новый объект не создаётся, а мы просто пользуемся наследником как базовым
نمایش همه...
Стать профессионалом в IT, наполнить портфолио интересными проектами и успешно пройти техническое собеседование в одну из крупнейших российских IT-компаний 👨‍💻 А также развить алгоритмическое мышление и просто провести свободное время с пользой 🕺 Участвуй во Всероссийском чемпионате по алгоритмическому программированию RuCode.СТАРТ. Индивидуальный онлайн-контест пройдет уже 19 мая.
نمایش همه...
👍 2🔥 2🥰 1🤔 1
🍊 Что такое placement new? Placement new - это специальный вид оператора new, который позволяет создать объект в уже выделенной памяти
char *buffer      = new char[1024];
string *str_point = new (buffer) string("hi"); // placement new
❗️В основном необходимо, если мы не хотим запрашивать у операционной системы выделения памяти или когда у нас есть менеджер памяти и нельзя в обход него выделять память ‼️ Следует учитывать, что деструкторы для таких объектов придётся вызывать вручную, потому что при освобождении памяти они автоматически не вызоваются
نمایش همه...
👍 5🔥 1🥰 1
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом. Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций. Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах. 👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
نمایش همه...
🧨 Как очистить stringstream? Для очистки содержимого строкового потока можно использовать:
m.str("");
или
m.str(std::string());
что может быть более эффективно, из-за того что не вызываем конструктор std::string(const char*)
نمایش همه...