лекции программирование / polevoy_cpp_2012_spring_lecture_04
.pdfvector<>
•динамический массив
•произвольный доступ
•быстрая вставка/удаление в конец
•медленная вставка/удаление в начало
•изменение числа элементов делает итераторы невалидными
03.03.2012 |
www.cppNewb.ru |
41 |
Объявление vector
template <class T,
class Allocator = allocator<T> > class vector
vector<bool> - специализация
03.03.2012 |
www.cppNewb.ru |
42 |
Доступ к элементам vector
•по индексу
–замена встроенным массивам
•с концов
•через итератор
–обобщенный вариант
•последовательное расположение элементов в памяти
03.03.2012 |
www.cppNewb.ru |
43 |
Доступ к элементам vector по индексу
•T& at(int i)
–с контролем выхода за пределы
•T& operator[](int i)
–без контроля выхода за пределы
пример:
data.at(iBest) = iCurrent;
iNext = data.at(j);
data[iBest] = iCurrent;
03.03.2012 |
www.cppNewb.ru |
44 |
Доступ к элементам vector с концов
•T& front()
–первый элемент
•T& back()
–последний элемент
03.03.2012 |
www.cppNewb.ru |
45 |
Доступ к элементам vector (если контейнер const)
const T& operator[](int i) const const T& at(int i) const
const T& front() const
const T& back() const
03.03.2012 |
www.cppNewb.ru |
46 |
Размеры vector
•size
–число элементов
•empty
–проверка на пустоту
•capacity
–максимальное число элементов (буфер)
•max_size
–максимальное число элементов (системно)
•resize
–изменить число элементов
•reserve
–гарантировать размер буфера (не меньше)
03.03.2012 |
www.cppNewb.ru |
47 |
Очистка массива
•void clear()
–удалить все элементы
03.03.2012 |
www.cppNewb.ru |
48 |
Обмен содержимым для массивов
•void
swap(vector<T, Allocator>& vec)
пример:
best.swap(worst);
03.03.2012 |
www.cppNewb.ru |
49 |