Контейнери 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 Все права принадлежат авторам размещенных материалов.
|