Язык программирования C++. Вводный курс


Алгоритм sort_heap() - часть 36


[15]

Программа компилировалась компилятором, не поддерживающим значений параметров по умолчанию шаблонов. Поэтому нам пришлось явно указать аллокатор:

vector<string,allocator> *lines_of_text;

Для компилятора, полностью соответствующего стандарту С++, достаточно отметить тип элементов:

vector<string> *lines_of_text;

[16]

Конечно, в английском языке существуют исключения из правил. Наш эвристический алгоритм превратит crises

(множ. число от crisis – прим. перев.) в cris. Ошибочка!

[17] Таким образом, как мы видим, определения встроенных функций могут встретиться в программе несколько раз! – Прим. ред.

[18]

Полный текст реализации класса CommandOpt можно найти на Web-сайте издательства Addison-Wesley.

1. Если имеющийся у Вас компилятор пока не поддерживает параметр шаблонов по умолчанию, то конструктору istream_iterator необходимо будет явно передать также и второй аргумент: тип difference_type, способный хранить результат вычитания двух итераторов контейнера, куда помещаются элементы. Например, в разделе 12.2 при изучении программы, которая должна транслироваться компилятором, не поддерживающим параметры шаблонов по умолчанию, мы писали:

typedef vector<string,allocator>::difference_type diff_type

istream_iterator< string, diff_type > input_set1( infile1 ), eos;

istream_iterator< string, diff_type > input_set2( infile2 );

Если бы компилятор полностью удовлетворял стандарту C++, достаточно было бы написать так:

istream_iterator< string > input_set1( infile1 ), eos;

istream_iterator< string > input_set2( infile2 );

 

1 Более подробное обсуждение этой темы с примерами и приблизительными оценками производительности см. в [LIPPMAN96a].

2 В реальной программе мы объявили бы член _name как имеющий тип string. Здесь он объявлен как C-строка, чтобы отложить рассмотрение вопроса об инициализации членов класса до раздела 14.4.

3 Для тех, кто раньше программировал на C: приведенное выше определение класса Account на C выглядело бы так:




Начало  Назад  Вперед