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...