polevoy_cpp_2012_spring_lecture_10
.pdfОбъявление list<>
template
<class T,
class Allocator = allocator<T> >
class list
14.04.2012 |
cppNewb.ru |
51 |
Доступ к элементам list
•через итератор
–обобщенный вариант
•с концов
•элементы произвольное расположены в памяти
14.04.2012 |
cppNewb.ru |
52 |
Размеры list
•size
–число элементов
•empty
–проверка на пустоту
•max_size
–максимальное число элементов (системно)
•resize
–изменить число элементов
14.04.2012 |
cppNewb.ru |
53 |
deque<>
•блочно-списочная структура
•произвольный доступ
•быстрая вставка/удаление в конец
•быстрая вставка/удаление в начало
•изменение числа элементов делает итераторы невалидными
14.04.2012 |
cppNewb.ru |
54 |
pair<>
•хранение пары значений, м.б. разного типа
•сравнение пар
14.04.2012 |
cppNewb.ru |
55 |
Определение pair<>
template<class T1, class T2> struct pair
{
typedef T1 first_type; typedef T2 second_type; T1 first;
T2 second;
pair() : first(T1()), second(T2()) {}
pair(const T1& x, const T2& y) : first(x), second(y) {}
template <class U, class V> pair(const pair<U, V>&p)
: first(p.first), second(p.second) { }
};
14.04.2012 |
cppNewb.ru |
56 |
Сравнение pair<>
•<utility>
•определены операторы сравнения
==, <, !=, >, >= и <=
•(lhs == rhs) означает
(lhs.first == rhs.first) && (lhs.second == rhs.second)
•в сравнении на неравенство (<, >)
–сравнивается first
–если равны, то сравниваются second
14.04.2012 |
cppNewb.ru |
57 |
map<>
•бинарное дерево поиска
•отображение key→value
•итераторы валидны при вставке и
удалении
–кроме удаления текущего элемента
14.04.2012 |
cppNewb.ru |
58 |
Объявление map<>
template<class Key, class T, class Compare = less<Key>, class Allocator = allocator<pair<const Key,T> > >
class map
14.04.2012 |
cppNewb.ru |
59 |
Доступ к элементам map
• через итератор
– обобщенный вариант
find
insert
• через индекс-ключ
T& operator[](const Key& k)
14.04.2012 |
cppNewb.ru |
60 |