Попробуйте инстанцировать шаблон классом std::pair
четверг, 24 марта 2011 г.
Двоичные деревья
Напишите шаблон двоичного дерева поиска и контейнер к нему, реализуйте вставку удаление и поиск элементов с сохранением упорядоченной структуры дерева.
Попробуйте инстанцировать шаблон классом std::pair для которого оператор сравнения сравнивает элементы используя std::pair::first.
Попробуйте инстанцировать шаблон классом std::pair
суббота, 19 марта 2011 г.
среда, 16 марта 2011 г.
Шаблоны 1
Сделайте контейнер связного списка и список шаблонами класса, где параметром шаблона служит хранимый тип.
перегрузите оператор сравнения для комплексных чисел, сравнивающий числа по модулю и проверьте что сортировка для списка комплексных чисел работает правильно.
шаблоны делаются примерно так:
template< class T>
struct List{
T value;
List* next;
}
перегрузите оператор сравнения для комплексных чисел, сравнивающий числа по модулю и проверьте что сортировка для списка комплексных чисел работает правильно.
шаблоны делаются примерно так:
template< class T>
struct List{
T value;
List* next;
}
воскресенье, 6 марта 2011 г.
пятница, 4 марта 2011 г.
контейнер списка.
Сделайте класс-контейнер для связного списка.
Контейнер должен хранить голову списка, уметь добавлять элементы в список, удялять элементы из списка, удалять список в деструкторе, при копировании контейнера должна создаваться копия списка.
Пояснения:
Это нужно для того чтобы список мог быть стековым объектом и самоудаляться при выходе из области видимости, а так же для устранения путаницы с указателями - уменьшить возможности для получения нескольких указателей на элементы одного и того же списка и проблемы с временем жизни указателей.
Чтобы копировать сам список а не указатель на голову списка перегрузите operator= и конструктор копирования.
Контейнер должен хранить голову списка, уметь добавлять элементы в список, удялять элементы из списка, удалять список в деструкторе, при копировании контейнера должна создаваться копия списка.
Пояснения:
Это нужно для того чтобы список мог быть стековым объектом и самоудаляться при выходе из области видимости, а так же для устранения путаницы с указателями - уменьшить возможности для получения нескольких указателей на элементы одного и того же списка и проблемы с временем жизни указателей.
Чтобы копировать сам список а не указатель на голову списка перегрузите operator= и конструктор копирования.
четверг, 3 марта 2011 г.
Перегрузка операторов
Напишите класс комплексных чисел с перегруженными операторами +, -, *, / и оператором << для вывода комплексного числа на экран.
см перегрузка функций страуструп 191, страуструп 309
см перегрузка функций страуструп 191, страуструп 309
вторник, 1 марта 2011 г.
Инициализация, конструкторы, деструкторы
Примените конструкторы и деструкторы для автоматизации создания и удаления связных списков в предыдущих заданиях.
немного о конструкторах и деструкторах:
В структурах классах можно объявлять функции которые запускаются при создании объекта и инициализируют их угодным программеру образом.
Конструктор должен иметь то же имя что и класс/структура, конструктор может иметь параметроы. Конструкор без параметров называется конструктором по-умолчанию, конструктор с параметром - ссылка на определяемый класс, называется конструктор копирования.
struct List {
List()//default constructor
{
value = 0;
next = 0;
}
List(const List &s)//copy constructor
{
value = s.value;
next = s.next;
}
List(int v, List* n)//constructor
{
value = v;
next = n;
}
int value;
List* next;
};
main()
{
List a;//вызывается конструктор по-умолчанию
List b(a); // вызывается конструктор копирования
List v = a;// вызывается конструктор копирования
List g(4,&a);// вызывается конструктор List::List(int v,List* n)
List *d = new List;//вызывается конструктор по-умолчанию
List *e = new List(d);//вызывается конструктор копирования
List *j = new List(4,d);// вызывается конструктор List::List(int v,List* n)
}
Деструктором должен иметь тоже имя что и класс, но с добавлением тильды перед именем и не может иметь параметров, деструктор вызывается при удалении объекта.
struct List {
~List()//destructor
{
delete next;
}
int value;
List* next;
};
немного о конструкторах и деструкторах:
В структурах классах можно объявлять функции которые запускаются при создании объекта и инициализируют их угодным программеру образом.
Конструктор должен иметь то же имя что и класс/структура, конструктор может иметь параметроы. Конструкор без параметров называется конструктором по-умолчанию, конструктор с параметром - ссылка на определяемый класс, называется конструктор копирования.
struct List {
List()//default constructor
{
value = 0;
next = 0;
}
List(const List &s)//copy constructor
{
value = s.value;
next = s.next;
}
List(int v, List* n)//constructor
{
value = v;
next = n;
}
int value;
List* next;
};
main()
{
List a;//вызывается конструктор по-умолчанию
List b(a); // вызывается конструктор копирования
List v = a;// вызывается конструктор копирования
List g(4,&a);// вызывается конструктор List::List(int v,List* n)
List *d = new List;//вызывается конструктор по-умолчанию
List *e = new List(d);//вызывается конструктор копирования
List *j = new List(4,d);// вызывается конструктор List::List(int v,List* n)
}
Деструктором должен иметь тоже имя что и класс, но с добавлением тильды перед именем и не может иметь параметров, деструктор вызывается при удалении объекта.
struct List {
~List()//destructor
{
delete next;
}
int value;
List* next;
};
Подписаться на:
Комментарии (Atom)