Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Определяем пустой вектор:
vector< int > arr;Затем добавляем к нему элементы при помощи различных функций. Например, функция push_back()вставляет элемент в конец вектора. Вот фрагмент кода, считывающего последовательность чисел и добавляющего их в вектор:
int i;for (i=1; i<9; i++) { arr.push_back(i); //...}Хотя мы можем использовать операцию взятия индекса для перебора элементов вектора:
cout << "считаны числа: \n";for (int ix =0; ix < arr.size(); ++ix) cout << arr [ ix ] << ' ';cout << endl;удобнее использовать итераторы:
cout << "считаны числа: \n";for (vector<int>::iterator it = arr.begin(); it!= arr.end(); ++it) cout << *it << ' ';cout << endl;Итератор — это класс стандартной библиотеки, фактически являющийся указателем на элемент массива.
Выражение
*it;разыменовывает итератор и дает сам элемент вектора. Инструкция
++it;сдвигает указатель на следующий элемент. Не нужно смешивать эти два подхода. Если следовать идиоме STL при определении пустого вектора:
vector<int> ivec;будет ошибкой написать:
ivec[0] = 1024;У нас еще нет ни одного элемента вектора ivec; количество элементов выясняется с помощью функции size().
Можно допустить и противоположную ошибку. Если мы определили вектор некоторого размера, например:
vector<int> ia(10);то вставка элементов увеличивает его размер, добавляя новые элементы к существующим. Хотя это и кажется очевидным, тем не менее, начинающий программист вполне мог бы написать:
const int size = 7;int ia[ size ] = { 0, 1, 1, 2, 3, 5, 8 };vector< int > ivec(size);for (int ix = 0; ix < size; ++ix) ivec.push_back(ia[ ix ]);Имелась в виду инициализация вектора ivec значениями элементов ia, вместо чего получился вектор ivec размера 14.
Дата публикования: 2015-01-13; Прочитано: 210 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!