
лекции программирование / polevoy_cpp_2012_spring_lecture_04
.pdf
vector<>
•динамический массив
•произвольный доступ
•быстрая вставка/удаление в конец
•медленная вставка/удаление в начало
•изменение числа элементов делает итераторы невалидными
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 |