for (i=v.begin(); i != v.endf); ++i) cout << *i « " ";
В приведенном цикле лучше не заменять != на <. Хотя в примере это сработает, но оператор < неприменим к некоторым другим типам, отличными от vector<int> (см. раздел 1.9), в то время как оператор != работает во всех случаях.
Обычно в математике запись [а, Ь] используется для обозначения закрытого интервала а < х < Ь, а запись (а, Ь) - для открытого интервала а<х<Ь. Это объясняет запись
[а, Ь) для интервала
а < х < Ъ Подобным же образом мы иногда будем писать
[ia, ib) для диапазона значений итератора в следующем фрагменте кода:
vector<int>::iterator i, ia, ib;
for (i = ia; i != ib; ++i) ...
Ошибка выделения памяти
Поскольку все числа, которые читает программа rea.dwr.cpp, хранятся в динамически распределяемой памяти, используемая нами компьютерная система наложит ограничение на размер ввода. Вопрос усложняется из-за
реализации некоторыми операционными системами виртуальной памяти, что предполагает использование жесткого диска для расширения оперативной памяти. Хотя этот подход предоставляет в наше распоряжение огромное количество памяти (за счет уменьшения скорости вычислений), ясно, что рано или поздно фрагмент кода
vector<int> v;
for (;;) v.push_back(0);
приведет к ошибке выделения памяти. То же самое наблюдается при исполнении
int *р;
for (;;) р = new int;
В последнем фрагменте обычная проверка if (p != NULL) не будет работать с современными компиляторами C++. Согласно проекту стандарта C++ ошибка выделения памяти будет приводить не к возвращению значения NULL, а к «выбросу исключения». Несмотря на то что ошибка распределения памяти относится к C++, а не к STL, это была бы достаточно важная тема для обсуждения в настоящей книге, если бы существовало простое, переносимое решение, совместимое с большинством популярных компиляторов и соответствующее принятому стандарту C++. Поскольку различные компиляторы требуют разных подходов, а стандарт языка находится в стадии проекта, мы опустим обсуждение этой темы в данной книге, которая все-таки посвящена STL, а не C++.
Возвращаясь назад
<< назад вперед >>