Программирование >>  Расширенная версия языка c++ 

1 ... 139 140 141 [ 142 ] 143 144 145 ... 227


В этой программе тоже сначала создается вектор v нулевой длины. Далее с помощью функции-члена push back() к концу вектора v добавляются некоторые значения и размер вектора v увеличивается.

Обратите внимание на объявление итератора р. Тип iterator определяется с помощью класса-контейнера. То есть, чтобы получить итератор для выбранного контейнера, объявить его нужно именно так, как показано в примере: просто укажите перед типом iterator имя контейнера. С помощью функции-члена beginO итератор инициализируется, указывая на начало вектора. Возвращаемым значением этой функции как раз и является итератор начала вектора. Теперь, применяя к итератору оператор инкремента, можно получить доступ к любому выбранному элементу вектора. Этот процесс совершенно аналогичен использованию указателя для доступа к элементам массива. С помощью функции-члена end() определяется факт достижения конца вектора. Возвращаемым значением этой функции является итератор того места, которое находится сразу за последним элементом вектора, Таким образом, если итератор р равен возвращаемому значению функции v.end(), значит, конец вектора был достигнут.

3. Помимо возможности элементов в конце вектора, с помощью

функции-члена insert() их можно вставлять в его середину. Удалять элементы из вектора можно с помощью функции-члена erase().

Демонстрация функции rt () ase () #include <io3tream>

tinclude <vector> , ...

using namespace std;

int mainO

vector<int> v(5r 1); создание пятиэлементного вектора

из единиц Int i; . . .

мвод на экран исходн1х размера и содержого вектора cou Размер = <ч v.s.Lzei) and; cou Исходное содержимое;\n ; for(i=0; i<v.size(); i++) cout v[i] ; cout endl;

vector<int> : : i-er-p = v.becm!); :

p += 2; указывает на третий элемент

мавка в вектор на то место, куда указывает итератор р десяти вых элементов, каждый из которых равен 9 V. insert (р, 10, 9) ;

вывод на экран размера

и содержимого вектора после вставки

cout Размер после вставка size () endl;



После выполнения программы на экране появится следующее:

Размер = 5

Исходное содержимое: . ., .

11111

Размер после вставки =15 , . .

Содержимое после вставки:

119999999999111

Размер после удаления = 5 Содержимое после удаления:

1 1 1 1 1 .

4. В следующем примере вектор используется для хранения объектов класса, определенного программистом. Обратите внимание, что в классе определяются конструктор по умолчанию и перегруженные версии операторов < и ==. Помните, в зависимости от того, как реализована библиотека стандарт-н1х шаблонов для вашего компилятора, вам может понадобиться определить и другие операторы сравнения.

Хранение тсре объектов пользовательского класса ♦include <iostream> ♦include <vector> using namespace std;

clas mo {

double d; ...

cout Содержимое после вставки: \п ; for(i=0; i<v.size(); i++) cout v[i] ; cout endl;

удаление вставленных элементов p tegin () ;

p +2; указывает на третий элемент

V.erase{р, р+10); удаление слеющих десяти элементов

за элементом, на который указывает итератор р .

ыводна экран размера и содержого вектора после удаления

cout Размер после удаления ize() endl;

cout Содерж№4ое после удаления:\п ;

cout

cout endl; return 0;



После выполнения программы на экране появится следующее:

О 0.333333 0.666667 1 1.3333 6667 2 2.33333 2.66667 3 О 0.7 1.4 2.1 2.8 3.5 4.2 4.9 5.6 6.3

Упражнения

1. Поэкспериментируйте с представленными примерами. Попытайтесь делать небольшие изменения в программах и исследуйте результаты.

public: , ЧгГг;*=.у

Demo О { .0; } - .

Demo (doubleх) { d = х; } (

Dem r- (double x) ( .. -ji,:-;-; .,

d = x; return *this;

} .ij

double getdO {return d; }

bol r< (Demo a. Demo b) - -

return a.getdO < b.getd{);

boll operator- (Demo a. Demo b) {

return ==

int mainO

vector<Demo> v;

int i;

for(i=0; i<10, i++)

v.push hack(Demo (i/3.0)) ;

for (i = 0; Kv.size () ;

cout v[i].getd(} ;

cout endl;

for(i=0; Kv.sizeO; i +

v[i] = v[i] .getdO * 2.1;

() i

cout v[i],getd() ; return 0;



1 ... 139 140 141 [ 142 ] 143 144 145 ... 227

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