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

1 ... 113 114 115 [ 116 ] 117 118 119 ... 156


Присваивает 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. Посмотрите, упростится ли реализация (вы будете приятно удивлены).



1 ... 113 114 115 [ 116 ] 117 118 119 ... 156

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика