Dyzzet|
C++ Data Science Алгоритмы Темы · Блог · YouTube
Колонками
Постранично
8 ноября 2017
Сортировка вставками. Интерактивная анимация

Идея сортировки: берём очередной элемент из ещё не отсортированной части массива (серый цвет) и ищем для него подходящее место в уже отсортированной части массива (чёрный цвет).

Читать далее →
8 ноября 2017
Гномья сортировка. Интерактивная анимация

Идея гномьей (наивной) сортировки такова. Представим, что числа — это горшочки. Гном начинает проверять горшочки слева направо. Пока они упорядочены по возрастанию, он просто продолжает проверять дальше. Как только он встречает горшок, который не на своём месте, он постепенно возвращается влево, находя ему подходящее место. Как только горшочек поставлен куда нужно, гном продолжает идти вправо.

Читать далее →
8 ноября 2017
Сортировка выбором. Интерактивная анимация

Идея этой сортировки проста: ищем минимальный элемент в ещё не отсортированной части массива (правой, в анимации обозначена серым цветом) и помещаем в конец уже отсортированного подмассива (слева, обозначено чёрным).

Читать далее →
6 ноября 2017
Сортировка пузырьком. Интерактивная анимация

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

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

Читать далее →
10 июля 2017
Полиморфная кухня — 5. C++11 и C++14

В пятой части серии рассмотрим возможности наследования и полиморфизма, которые появились в стандарте C++11, а также C++14.

Возьмём иерархию из предыдущей статьи (исходный текст см. там же).

Читать далее →
18 июня 2017
Smart Watch GT08
Автор: Вадим Герман

Некоторое время назад пришлось расстаться со своим HTC Desire 310. Хороший был аппарат, до сих пор иногда жалею. Сейчас я приобрёл Smart Watch GT08 и предлагаю вам обзор. Я не описывал коробку, комплект поставки, потому что это всё было уже тысячу раз. Взамен я постарался рассказать о том, о чём не говорят в обзорах.

Читать далее →
8 января 2017
Полиморфная кухня — 4. Приведение dynamic_cast и RTTI

Как у наших ворот за горою
Жил да был бутерброд с колбасою.
Захотелось ему прогуляться,
На траве-мураве поваляться.
И сманил он с собой на прогулку
Краснощёкую сдобную булку.
Корней Чуковский

В трёх первых частях серии мы подробно рассмотрели многие аспекты, касающиеся наследования и полиморфизма в C++. Сегодня поговорим о динамическом приведении типа и об идентификации типа на этапе исполнения программы.

Во вводной статье мы уже рассматривали приведение типа static_cast, которое имеет ограниченное применение. Когда дело касается приведения между типами, которые являются полиморфными (имеющими хотя бы одну виртуальную функцию), используется dynamic_cast (с неполиморфными классами это даже не скомпилируется).

Как всегда, придумаем какую-нибудь несложную иерархию.

Читать далее →
28 декабря 2016
Полиморфная кухня — 3. Множественное и виртуальное наследование

В первой части серии мы рассмотрели основы наследования и полиморфизма в языке C++, во второй рассмотрели механизм, благодаря которому всё это работает. Идём дальше: создадим более замысловатую иерархию.

Сегодня реализуем следующую иерархию. Базовым классом будет класс Cmyk, реализующий цветовую схему CMYK. Класс CmykGy будет содержать дополнительный серый, класс CmykLcLm — дополнительные светло-синий и светло-малиновый. Класс CmykGyLcLmLg внизу иерархии будет содержать все упомянутые дополнительные цвета (серый, светло-синий, светло-малиновый), а также светло-серый.

Читать далее →
20 октября 2016
Полиморфная кухня — 2. Таблицы виртуальных функций

В предыдущей статье мы рассмотрели основы наследования и полиморфизма в языке C++. Теперь подробнее рассмотрим, как реализован механизм полиморфизма.

Повторим основные моменты. Если в классе есть хотя бы одна функция с ключевым словом virtual, то она считается виртуальной, а сам класс — полиморфным. Для каждого полиморфного класса создаётся специальная таблица — таблица виртуальных функций. А каждый объект любого из полиморфных классов дополняется указателем на одну из таких таблиц.

Рассмотрим простую иерархию: розетка и заземлённая розетка.

                                          Socket                                
                                            ↑
                                      GroundedSocket

Читать далее →
26 августа 2016
Полиморфная кухня — 1. Наследование и полиморфизм в C++

В языке C++ наследование и полиморфизм — очень важные понятия. Эта тема довольно обширна, для её понимания необходимо хорошо уяснить для себя, как объекты реального мира соотносятся с объектами в языке, как и когда происходит создание и уничтожение объектов, как работать с памятью, ссылками, указателями и зачем необходимы списки инициализации. Не лишним будем знание стандартных контейнеров, умных указателей и понимание смысла константности.

Напишем класс Pancake. Добавим три поля: радиус блинчика, толщину и сорт муки. Конструктор этого класса снабдим списком инициализации. Последний штрих — напишем функцию print().

class Pancake
{
public:
    Pancake(int radiusMm, int thicknessMm, int flourSort) :
        radiusMm_(radiusMm),
        thicknessMm_(thicknessMm),
        flourSort_(flourSort)
    {
    }
 
    void print() const
    {
        std::cout << "Pancake." << std::endl;
    }
 
protected:
    unsigned radiusMm_;     // RRRRRRRR RRRRRRRR RRRRRRRR RRRRRRRR
    unsigned thicknessMm_;  // TTTTTTTT TTTTTTTT TTTTTTTT TTTTTTTT
    char flourSort_;        // SSSSSSSS 00000000 00000000 00000000
};

Читать далее →
8 7 6 5 4 3
2
1
© MMXI—MMXXII. RSS. Поддержать сайт
Светлая тема / тёмная тема