vector
string
и deque
. В массивах функциональность итераторов произвольного доступа обеспечивается указателями.•Любой класс, перегружающий оператор вызова функции (то есть operator
•Функции bind1st
bind2nd
называются Революционным новшеством STL являются гарантии сложности, то есть ограничения объема работы, выполняемой любыми операциями STL. Таким образом, программист может сравнить относительную эффективность нескольких решений в зависимости от платформы STL. Гарантии сложности выражаются в виде функции от количества элементов в контейнере или интервале
•Операция с
Термин «постоянная сложность» не стоит воспринимать буквально. Он означает не то, что время выполнения операции остается строго постоянной величиной, а лишь то, что оно не зависит от
•Операции с
•Время, необходимое для выполнения операций с
count
работает с линейной сложностью, поскольку он должен просмотреть каждый элемент в заданном интервале. Если интервал увеличивается в три раза, объем работы тоже увеличивается втрое, поэтому операция занимает в три раза больше времени.Как правило, операции с постоянной сложностью выполняются быстрее, чем операции с логарифмической сложностью, а последние выполняются быстрее операций с линейной сложностью. Этот принцип особенно четко выполняется для больших значений
И последнее замечание по поводу терминологии: вспомните, что каждый элемент контейнеров map
multimap
состоит из двух компонентов. Я обычно называю первый компонент map
ключ относится к типу string
double
.Примеры
Книга содержит множество примеров. Все примеры комментируются по мере их приведения, и все же кое-что следует пояснить заранее.
Из приведенного выше примера с map
#include
и игнорирую тот факт, что компоненты STL принадлежат пространству имен std. Полное определение m должно было выглядеть так:#include
#include
using std::map;
using std::string;
map
Но я предпочитаю оставить в примере лишь самое существенное. При объявлении формального параметра-типа шаблона вместо class
typename
. Иначе говоря, вместо конструкции видаtemplate
class Widget{...};
я использую конструкцию
template
class Widget{...};
В данном контексте ключевые слова class
typename
эквивалентны, но мне кажется, что слово typename
более четко выражает важную мысль: подходит class
— пожалуйста. Выбор между typename
и class
в этом контексте зависит только от стиля.