|
Программирование >> Расширенная версия языка c++
Таблица 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;
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |