Задания по С++

Материал из SEWiki
Версия от 11:52, 23 марта 2011; Btv (обсуждение | вклад) (добавил задание на шалоны)

Перейти к: навигация, поиск

Лабораторная работа №1

Шаблоны

Реализовать собственный контейнер

template<typename T>
class Container {
public:
    void push_back(const T& t);
    T& back();
    size_t size() const;
};

В качестве хранилища значенией в реализации Container используйте std::vector.

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

Пример использования такого контейнера

Container<int, std::list<int> > c;

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

Пример использования такого контейнера

Container<int, std::deque> c;

Лабораторная работа №2

Синглтон

Лабораторная работа №3

merge sort

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

template<typename Iter>
std::list<typename Iter::value_type> mergeSort(Iter left, Iter right);

Исходные данные функция модифицировать не должна, в возвращаемом списке должны быть отсортированные элементы.

Затем необходимо добиться, чтоб можно было сортировать по указателям:

int* array = new int[SIZE];
mergeSort(array, array + SIZE);

Рекомендации: для merge можно воспользоваться std::list::merge
для получения типа, на который указывает указатель, можно воспользоваться std::iterator_traits

Лабораторная работа №4

Задание

Лабораторная работа №5

Задание

To be continued