|
Программирование >> Формирование пользовательского контейнера
Присваивает t некоторые новые значения. for(i=-3; i < 2; i++) t[il.a = i; cout New contents of t:\n ; for(i=-3; i < 2; cout t[i].a ; cout endl7 Копирует в новый контейнер. RangeArray<test> t2(-7, 3, testO); серу(t.beginO, t.endO, &t2[-2]); cout Contents of t2:\n ; for(i=-7; i < 4; i++) cout t2[i].a ; cout endl; RangeArray<test> t3(t.beginO+1, t.end0-1); cout Contents of t3:\n ; for(i=t3.getiowerbound(); i < t3.getupperbound(); i++) cout t3[i].a ; cout endl; t.clear О ; cout Size after clear(): t.sizeO endl; Присваивает контейнеру объекты, t = t3; cout Contents of t:\n ; for(i=t.getiowerbound(); i<t.getupperbound(); i++) cout t[i].a ; cout endl; retium 0; Далее приведен вывод программы. Constructing Copy Constructor Copy Constructor сору Constructor сору Constructor copy Constructor pestructing original contents of t: 0 0 0 0 0 new contents of t: -3 -2-10 1 Constructing copy Constructor Copy Constructor copy Constructor copy Constructor Copy Constructor Copy Constructor Copy Constructor Copy Constructor Copy Constructor Copy Constructor Copy Constructor Destructing Contents of t2: 0 0 0 0 0-3-2-1010 Copy Constructor Copy Constructor Cqpy Constructor Contents of t3: -2 -1 0 Destructing Destructing Destructing Destructing Destructing Size after clearO : 0 Contents of t: -2 -1 0 Destructing Destructing Destructing Destructing Destructing Destructing Destructing Destructing Destructing Destructing Destructing Destructing Destructing Destructing Destructing Destructing Destructing Задания для самостоятельной работы Вы можете усовершенствовать класс RangeArray и поэкспериментировать с ним. Например, можно добавить итераторы обратного направления и функции rbeginO и rend О. Еще несколько идей. Попробуйте оптимизировать контейнер. Как упоминалось, при разработке класса RangeArray автор добивался максимальной прозрачности кода, а не скорости выполнения, поэтому контейнер легко улучшить. Например, попробуйте вьшелять чуть больше, чем нужно, памяти при конструировании объектов, в этом случае не все операции вставки потребуют повторного вьщеления памяти. Создайте функции-члены класса для преобразования объекта RangeArray в стандартный массив с нулевой нижней границей. Разработайте конструктор, принимающий стандартный массив и индекс в качестве параметра преобразующий массив в объект RangeArray. Используйте параметр индекс для определения местоположения нулевого значения индекса. Наконец, примените вектор вместо стандартного массива для хранения элементов контейнера RangeArray. Посмотрите, упростится ли реализация (вы будете приятно удивлены).
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |