Несколько доп. задач про операторы, про контейнеры STL и про RAII:

Просто как напоминание:

Эти задачи надо сделать до 1 мая

1. Пусть я хочу для отладки в некоторых своих функциях печатать в начале "Function started" (ну или какой-то похожий текст), а в конце работы функции хочу печатать "Function finished" и время, сколько она работала, в секундах.

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

Справка: чтобы замерить время, можно написать как-то так:

#include <time.h>
...
time_t secs = time(0);
// time(0) возвращает количество секунд, прошедших с 1 января 1970
// Тип time_t - это очень большое целое число

2. Определите для rational оператор вывода <<.

Справка: для этого надо написать такие заклинания:

ostream& operator<<(ostream& output, const rational& r)
{
  ... тут код, который печатает r ...
  return output;
}

(Это все пиштся вне класса, это обычная функция, не метод класса)

3. Пусть я хочу сделать set из обьектов типа rational. Что для этого надо определить для rational?

Определите необходимый оператор. Приведите пример (опишите set, добавьте в него несколько элементов и напечатайте их).

4. Дан список целых чисел (list<int>). Проверить, есть ли в нем два одинаковых числа и напечатать "да" или "нет".

Замечание: В этой задаче давайте считать, что чисел в списка немного (10-20, например), и самое быстрое - это просто сравнить каждый с каждым.

5. То же условие, что в задаче 4, но тут давайте считать, что чисел в списке много (больше 10000, например), и тут надо придумать более быстрый способ (я бы лично использовал воспомогательный set).

6. Опишите класс queue (очередь из целых чисел) с методами push и pop. Интерфейс пусть будет такой же, как в классе stack, который мы когда-то писали, но только pop возвращает _первый_ добавленный элемент. Для реализации используйте, пожалуйста, стандартный класс deque

Если в условиях что-то непонятно, пишите, пожалуйста!