Предыдущий пост -

Работа с векторами (vector)

Рубрика: C++, Дата: 3 March, 2013, Автор:
Tags:

Посмотрим, что такое vector.

vector – это контейтер стл.

заголовочный файл для векторов: #include <vector>

нужно добавить using std::vector; после директивы.

Дальше создаются векторы командой vector<int> a;

Инициализация векторов:

//создаем пустой вектор   
vector<string> a;
//вектор размеров м 8 элементов каждый равен 0
vector<int> b(8);
//вектор размером в 8 каждый равен 3
vector<int> c(8,3);
//вектро размером в 8 каждый равен 'k'
vector<string> d(8,"k");

Обращаться к векторам можно как к массивам например:

cout <<c[0]<<endl;

выведет 3 так как мы инициализировали его 3

Мы можем также и поменять значения вектора, например:

c[0]=33;
cout <<c[0]<<endl;

выведется на экран 33.

Вектор получается как бы массив. Заполним вектор с помощью итераторов.

vector<int>::iterator it=b.begin();//cozdali iterator vektora
int k=0;
for(;it!=b.end();++it,k++)
{
	*it=k;
}

для этого мы создали итератор it, присвоили ему начальное значение b.begin(), и дальше в цикле инкриментируем его в префиксной форме обязательно и проверяем на конец b.end(). it работаем как с уазателями разыменовывание покажет нам элемент который содержится в той или иной ячейке вектора.

Вывод векторов с помощью итераторов:

for(it=b.begin();it!=b.end();++it)
	cout <<*it<<endl;

мы тому же самому итератору снова присваиваем начальное значение функцией b.begin() и снова работаем как с указателями.

Теперь попробуем вывести вектор в обратном порядке есть специальные итераторы реверсивные для них созданы функции rbegin() и rend(), от слов reverse begin и reverse end вроде так.

Реверсивный вывод:

vector<int>::reverse_iterator itr;
for(itr=b.rbegin();itr!=b.rend();++itr)
	cout <<*itr<<endl;

Опять же с itr работаем в цикле как с обычным итератором, токо разница в том, что он выводит, не от начала, а с конца элементы вектора.

Функции для работы с векторами:

b.push_back(3);

добавит в конец вектора b элемент и присвоит ему значение 3, то есть вектор уже будет состоять из 9 элементов.

vector<int>::iterator it=b.begin();
if(it!=b.end())
{
	cout <<"ect6 element dl9 ydaleni9"<<endl;
	b.erase(it);
}

функция erase() удаляет любой элемент на который указывает итератор, то есть она принимат итератор. В данном примере итератор указывает на первый элемент вектора b.

Ну я думаю для начала на этом хватит.

 

rss