STL. Последовательные контейнеры — различия между версиями
Материал из SEWiki
(Новая страница: «'''Внимание!''' В лекции могут содержаться ошибки и неточности. Прошу исправлять по мере обн…») |
|||
Строка 7: | Строка 7: | ||
В неё входят: | В неё входят: | ||
* Контейнеры | * Контейнеры | ||
− | * | + | * Итераторы |
* Алгоритмы | * Алгоритмы | ||
Строка 21: | Строка 21: | ||
* <code>deque</code> - совокупность связанных в список массивов фиксированной длины + индексная таблица. | * <code>deque</code> - совокупность связанных в список массивов фиксированной длины + индексная таблица. | ||
* <code>string/wstring</code> - строка. | * <code>string/wstring</code> - строка. | ||
+ | Для использования этих контейнеров необходимо перед названием типов писать <code>std::</code>. | ||
=== <code>vector</code> === | === <code>vector</code> === | ||
+ | <source lang="cpp"> | ||
+ | #include <vector> | ||
+ | using std::vector; | ||
+ | std::vector<int> v; | ||
+ | </source> | ||
+ | У шаблона есть и второй параметр - аллокатор. Он отвечает за стратегию распределения памяти. Его использовать не надо! | ||
+ | |||
+ | Основные методы вектора представлены ниже: | ||
+ | <source lang="cpp"> | ||
+ | v.push_back(13); //добавить элемент к вектору | ||
+ | v.empty(); //вектор пуст? | ||
+ | v.size(); //количество элементов в векторе | ||
+ | v[i]; //обращение к i-му элементу вектора | ||
+ | v.at(i); //то же самое | ||
+ | v.erase(it); //удаление элемента по итератору (о них будет рассказано далее) | ||
+ | </source> | ||
+ | Пример хранения структуры графа: | ||
+ | <source lang="cpp"> | ||
+ | vector<vector<int> > g; | ||
+ | </source> | ||
+ | |||
+ | === deque === | ||
to be continued... | to be continued... |
Версия 15:09, 20 марта 2011
Внимание! В лекции могут содержаться ошибки и неточности. Прошу исправлять по мере обнаружения.
Введение в STL
STL - Standart Template Library. Она стандартизированна. Существует несколько реализаций, в том числе:
- GCC
- MS
- STL Port
В неё входят:
- Контейнеры
- Итераторы
- Алгоритмы
Последовательные контейнеры
Ко всем последовательным контейнерам предъявляются общие требования:
- Copy-constructable (т.е. публичный конструктор копирования).
- Assignable (т.е. публичный оператор присваивания).
- Стандартная семантика.
Разновидности
-
vector
- массив подряд идущих элементов. -
list
- список взаимосвязанных элеметов. -
deque
- совокупность связанных в список массивов фиксированной длины + индексная таблица. -
string/wstring
- строка.
Для использования этих контейнеров необходимо перед названием типов писать std::
.
vector
#include <vector>
using std::vector;
std::vector<int> v;
У шаблона есть и второй параметр - аллокатор. Он отвечает за стратегию распределения памяти. Его использовать не надо!
Основные методы вектора представлены ниже:
v.push_back(13); //добавить элемент к вектору
v.empty(); //вектор пуст?
v.size(); //количество элементов в векторе
v[i]; //обращение к i-му элементу вектора
v.at(i); //то же самое
v.erase(it); //удаление элемента по итератору (о них будет рассказано далее)
Пример хранения структуры графа:
vector<vector<int> > g;
deque
to be continued...