Задания по С++ — различия между версиями
Smal (обсуждение | вклад) (→Задание merge sort) |
Btv (обсуждение | вклад) (добавил задание на шалоны) |
||
| Строка 1: | Строка 1: | ||
== Лабораторная работа №1 == | == Лабораторная работа №1 == | ||
| + | === Шаблоны === | ||
| + | Реализовать собственный контейнер | ||
| + | <source lang="cpp">template<typename T> | ||
| + | class Container { | ||
| + | public: | ||
| + | void push_back(const T& t); | ||
| + | T& back(); | ||
| + | size_t size() const; | ||
| + | };</source> | ||
| + | В качестве хранилища значенией в реализации <code>Container</code> используйте <code>std::vector</code>. | ||
| − | + | Затем создайте новый контейнер с двумя шаблонными параметрами, первый - тип хранимых значений, второй - тип хранилища, используемый в реализации вашего контейнера. | |
| + | |||
| + | Пример использования такого контейнера | ||
| + | <source lang="cpp"> | ||
| + | Container<int, std::list<int> > c; | ||
| + | </source> | ||
| + | |||
| + | Затем создайте новый контейнер с двумя шаблонными параметрами, первый - тип хранимых значений, второй - шаблон, используемый в реализации вашего контейнера. | ||
| + | |||
| + | Пример использования такого контейнера | ||
| + | <source lang="cpp"> | ||
| + | Container<int, std::deque> c; | ||
| + | </source> | ||
== Лабораторная работа №2 == | == Лабораторная работа №2 == | ||
| + | === Синглтон === | ||
| + | |||
| − | + | <!-- Написать протой логгер | |
| + | <source lang="cpp">class Logger { | ||
| + | public: | ||
| + | void log(const std::string& msg); | ||
| + | static Logger& getInstance(); | ||
| + | }; | ||
| + | </source> | ||
| + | Запретить пользователю его создание, копирование. | ||
| + | Пример использования | ||
| + | --> | ||
== Лабораторная работа №3 == | == Лабораторная работа №3 == | ||
| − | === | + | === merge sort === |
Необходимо написать функцию сортировки слиянием.<br /> | Необходимо написать функцию сортировки слиянием.<br /> | ||
Сигнатура функции должны быть такой:<br /> | Сигнатура функции должны быть такой:<br /> | ||
Версия 11:52, 23 марта 2011
Содержание
Лабораторная работа №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
Задание