АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Доступ к элементам вектора с помощью итератора

Читайте также:
  1. E) Обратиться за помощью к России
  2. Russian/ China/ Org/ Cn – Режим доступа:http://russian.china.org.cn/exclusive/txt/2011-10/18/content_23658835.htm
  3. Абсолютное изменение валового сбора под влиянием изменения структуры посевных площадей рассчитывается с помощью индексов
  4. Абсолютное изменение средней урожайности под влиянием изменения структуры посевных площадей рассчитывается с помощью индексов
  5. Азотной кислоты с помощью серной кислоты
  6. Анализ электорального поведения с помощью социологии политики Пьера Бурдье.
  7. Базова (транспортна) мережа та мережа доступу
  8. Биологическая доступность не определяется
  9. ВВЕДЕНИЕ ЛЕКАРСТВЕННЫХ СРЕДСТВ С ПОМОЩЬЮ КЛИЗМ
  10. Векторы и скаляры. Линейные действия над векторами.
  11. Верстка с помощью слоев (блоков)
  12. Виды прав доступа

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

Для объявление итератора следует указать тип вектора через двойное двоеточие написать слово iterator, после чего через разделитель записать имя итератора. Например,

 

vector<char> v(10); // Создаем вектор из 10 элементов.

vector<char>::iterator p; // создаем итератор.

Рассмотрим соответствующий пример программы.

 

// Доступ к элементам вектора <: помощью итератора.

#include"stdafx.h"

// Доступ к элементам вектора <: помощью итератора.

#include <iostream>

#include <vector>

#include <windows.h>

#include <cctype>

using namespace std;

int main() {

vector<char> v(10); // Создаем вектор из 10 элементов.

vector<char>::iterator p; // создаем итератор.

int i;

// Присваиваем элементам вектора определенные значения.

p = v.begin();

i = 0;

while (p!= v.end()) {

*p = i + 'a';

p++;

i++;

}

SetConsoleOutputCP(1251);

// Выводим содержимое вектора на экран,

cout << "Исходное содержимое:\n";

p = v.begin ();

while(p!= v.end()) {

cout <<*p << " ";

p++;

}

cout <<"\n\n";

// Изменяем содержимое вектора.

p = v.begin();

while(p!= v.end()) {

*p = toupper(*p);

p++;

}

// Выводим содержимое вектора на экран,

cout << "Модифицированное содержимое\n";

p = v.begin();

while(p!= v.end()) {

cout<< *p <<" ";

p++;

}

cout <<endl;

char z;

cin>>z;

return 0;

}

 

 

Результаты работы этой программы приведены ниже.

 

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

 

 


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.)