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

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


Таблица 14.2 (продолжение)

Функция-член

Описание

reversejterator rbegin(); const reverse Iterator

rbeglnO const;

reversejterator rend(); const reverse lterator

const;

void reserve(sizejype число);

void resize(size type число,

T значение = T());

size type slze(] const;

void swap(vector<T,

Allocator>&o6beifr);

Возвращает обратный итератор конца вектора

Возвращает обратный итератор начала вектора

Устанавливает емкость вектора равной, по меньшей мере, параметру число элементов

Изменяет размер вектора в соответствии с параметром число. Если при этом вектор удлиняется, то добавляемые в конец вектора элементы получают значение, заданное параметром значение

Возвращает хранящееся на данный момент в векторе число элементов

Обмениваем енты, хранящиеся в вызывающем векторе, с элементами в объекте объект

1. В представленном ниже коротком примере показаны основные операции, которые можно выполнять при работе с вектором.

Основные операции вектора tfiriclu.de <iostream> ttinclude <vector> using namespace std;

int main ( )

[

vector<int> v; создание Topa нулевой длины int x;

вывод на экран размера исходного вектора v cout . Размер endl;

помещение значений в конец вектора,

по мере необходимости вектор будет расти

for(i=0; i<10; ush back(i);

вывод на экран текущего размера вектора v cou Новый размер size о endl;



430 Самоучитель G++

вывод на экран содержого вектора v cout Текущее содержимое; \п ;

for(i=0; i<v.size{); i++) cout v[i] ;

cout

помещение нов1 мений в конец вектора, t lui.t..

и опять по мере необходимости вектор будет расти

forCi-0; i<10; v. push back (i+10) ;

вывод на экран текущего размера вектора cout Нов размер v. size О endl;

вывод на экран содержимого вектора

cou Текущее ;одержимое: \п ;

for(i=0; i<v.size(); i++) cout v[i] ;

cout endl;

изменение содержимого вектора

for(i=0; i<v.size(); i++) v[i] =v[i] +v[i];

вывод на экран содержимого вектора cout Удвоенное содержтлое : \u ; for(i=0; Kv.sizeO; i++) cout v[i] cou endl;

return

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

Размер = О .

Новый размер 10 Текущее содержимое: 0123456789 Новый размер = 2 0 Текущее содержимое:

О 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Удвоенное coflep;t::MOP ;

О 2 4 б 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38

Тщательно проанализируйте программу. В функции in<) создается вектор v для хранения целых. Поскольку не используется никакой инициализации, это пустой вектор с равной нулю начальной емкоъю, то есть это вектор нулевой длины. Этот факт подтверждается вызовом функции-член е(). Далее с помощью функции-члена push back() к концу вектора v добавляется десять элементов. Чтобы разместить эти новые элементы, вектор v вынужден увеличиться. Как показывает выводимая на экран информация, его размер стал равным 10. После этого выводится содержимое вектора v. Обратите внимание, что для этого используется обычный оператор индекса массива. Далее к вектору добав-



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

0123456789 0123456789

ляется еще десять элементов и, чтобы стить, вектор снова автоматически увеличивается. В конце концов, с помощью стандартного оператора индекса массива меняются значения элементов вектора.

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

2. Как вы знаете, в C++ массивы и указатели очень тесно связаны. Доступ к массиву можно получить либо через оператор индекса, либо через указатель. По аналогии с этим в библиотеке стандартн1х шаблонов имеется тесная связь между векторами и итераторами. Доступ к членам вектора можно получить либо через оператор индекса, либо через итератор. В следующем примере показаны оба этих подхода.

Организация доступа отору с помощью итератора ttinclude <io3tream>

ttinclude <vector>

using namespace std; . , .

int main ( }

vector<int> v; создание вектора нулевой длины int i;

помещение значений в вектор

for (i=0; i<10; i++) v.push back (i) ;

доступ к содержому вектора использованием оператора индекса for(1=0; i<lU; i++) cout v[i] ; cout endl;

доступ к вектору через итератор vector<int>: : iterator p = v.beginO; while{p i-v.end)) {

cou *p ;

P:++; . .-

return 0;



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

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