Здавалка
Главная | Обратная связь

Контейнери vector - вектор.



Вектор vector у STL визначений як динамічний масив з доступом до його елементів по індексі.

template<class T,class Allocator=allocator<T>>class std::vector{…};

де T – тип призначених для збереження даних.

Allocator задає розподільник пам'яті, що за замовчуванням є стандартним.

У класі vector визначені наступні конструктори.

explicit vector(const Allocator& a=Allocator());

explicit vector(size_type число, const T&значення= T(), const Allocator&a= Allocator());

vector(const vector<T,Allocator>&об'єкт);

template<class InIter>vector(InIter початок, InIter кінець, const Allocator&a= Allocator());

Перша форма являє собою конструктор порожнього вектора.

В другій формі конструктора вектора число елементів – це число, а кожен елемент дорівнює значенню значення. Параметр значення може бути значенням за замовчуванням.

Третя форма конструктора вектор – це конструктор копіювання.

Четверта форма – це конструктор вектора, що містить діапазон елементів, заданий ітераторами початок і кінець.

Приклад 1.

vector<int> a;

vector<double> x(5);

vector<char> c(5,’*’);

vector<int> b(a); //b=a

Для будь-якого об'єкта, що буде зберігатися у векторі, повинний бути визначений конструктор за замовчуванням. Крім того, для об'єкта повинні бути визначені оператори < і ==.

Для класу вектор визначені наступні оператори порівняння

==, <, <=, !=, >, >=.

Крім цього, для класу vector визначається оператор індексу [].

· Нові елементи можуть включатися за допомогою функцій

insert(), push_back(), resize(), assign().

· Існуючі елементи можуть віддалятися за допомогою функцій

erase(), pop_back(), resize(), clear().

· Доступ до окремих елементів здійснюється за допомогою ітераторів

begin(), end(), rbegin(), rend(),

· Маніпулювання контейнером, сортування, пошук у ньому, тощо, можливо за допомогою глобальних функцій файлу-заголовка <algorithm.h>.

Приклад 2.

#include<iostream.h>

#include<vector.h>

using namespace std;

void main()

{vector<int> v;

int i;

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

cout<<“size=”<<v.size()<<“\n”;

for(i=0;i<10;i++)cout<<v[i]<<“ ”;

cout<<endl;

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

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

cout<<endl;

}

Приклад 3. Доступ до вектора через ітератор.

#include<iostream.h>

#include<vector.h>

using namespace std;

void main()

{vector<int> v;

int i;

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

cout<<“size=”<<v.size()<<“\n”;

vector<int>::iterator p=v.begin();

while(p!=v.end())

{cout<<*p<<” “;p++;}

}

Приклад 4. Вставка і видалення елементів

#include<iostream.h>

#include<vector.h>

using namespace std;

void main()

{vector<int> v(5,1);

int i;

//вивід

for(i=0;i<5;i++)cout<<v[i]<<“ ”;

cout<<endl;

vector<int>::iterator p=v.begin();

p+=2;

//вставити 10 елементів зі значенням 9

v.insert(p,10,9);

//вивід

p=v.begin();

while(p!=v.end())

{cout<<*p<<” “;p++;}

//видалити вставлені елементи

p=v.begin();

p+=2;

v.erase(p,p+10);

//вивід

p=v.begin();

while(p!=v.end())

{cout<<*p<<” “;p++;}

}

Приклад 5. Вектор містить об'єкти класу користувача.

#include<iostream.h>

#include<vector.h>

#include”student.h”

using namespace std;

void main()

{vector<STUDENT> v(3);

int i;

v[0]=STUDENT(“Іванов”,45.9);

v[1]=STUDENT(“Петров”,30.4);

v[0]=STUDENT(“Сідоров”,55.6);

//вивід

for(i=0;i<3;i++)cout<<v[i]<<“ ”;

cout<<endl;

}







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.