Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C++ для начинающих.pdf
Скачиваний:
183
Добавлен:
01.05.2014
Размер:
3.97 Mб
Скачать

Алгоритмы для работы с хипом

В стандартной библиотеке используется макс-хип. Макс-хип – это представленное в виде массива двоичное дерево, для которого значение ключа в каждом узле больше либо равно значению ключа в каждом из узлов-потомков. (Подробное обсуждение макс-хипа можно найти в [SEDGEWICK88]. Альтернативой ему является мин-хип, для которого значение ключа в каждом узле меньше либо равно значению ключа в каждом из узлов-потомков.) В реализации из стандартной библиотеки самое большое значение (корень дерева) всегда оказывается в начале массива. Например, приведенная последовательность букв удовлетворяет требованиям, накладываемым на хип:

X T O G S M N A E R A I

В данном примере X – это корневой узел, слева от него находится T, а справа – O. Обратите внимание, что потомки не обязательно должны быть упорядочены (т.е. значение в левом узле не обязано быть меньше, чем в правом). G и S – потомки узла T, а M и N – потомки узла O. Аналогично A и E – потомки G, R и A – потомки S, I – левый потомок M, а N – листовой узел без потомков.

Четыре обобщенных алгоритма для работы с хипом: make_heap(), pop_heap(), push_heap() и sort_heap() – поддерживают его создание и различные манипуляции. В последних трех алгоритмах предполагается, что последовательность, ограниченная парой итераторов, – действительно хип (в противном случае поведение программы не определено). Заметим, что список нельзя использовать как контейнер для хранения хипа, поскольку он не поддерживает произвольный доступ. Встроенный массив для размещения хипа использовать можно, но в этом случае трудно применять алгоритмы pop_heap() и push_heap(), так как они требуют изменения размера контейнера. Мы опишем все четыре алгоритма, а затем проиллюстрируем их работу на примере небольшой программы.

Алгоритм make_heap()

template< class RandomAccessIterator > void

make_heap( RandomAccessIterator first, RandomAccessIterator last );

template< class RandomAccessIterator, class Compare

>

void

make_heap( RandomAccessIterator first, RandomAccessIterator last, Compare comp );

make_heap() преобразует в хип последовательность, ограниченную диапазоном [first,last). В первом варианте для сравнения используется оператор “меньше”, определенный для типа элементов контейнера, а во втором – операция comp.

Алгоритм pop_heap()

template< class RandomAccessIterator > void

pop_heap( RandomAccessIterator first, RandomAccessIterator last );

template< class RandomAccessIterator, class Compare

>

void

pop_heap( RandomAccessIterator first, RandomAccessIterator last, Compare comp );

pop_heap() в действительности не исключает наибольший элемент, а переупорядочивает хип. Он переставляет элементы в позициях first и last-1, а затем перестраивает в хип последовательность в диапазоне [first,last-1). После этого “вытолкнутый” элемент можно получить посредством функции-члена back() контейнера либо по-настоящему исключить его с помощью pop_back(). В первом варианте при сравнении используется оператор “меньше”, определенный для типа элементов контейнера, а во втором – операция comp.

Алгоритм push_heap()

template< class RandomAccessIterator > void

push_heap( RandomAccessIterator first, RandomAccessIterator last );

template< class RandomAccessIterator, class Compare

>

void

push_heap( RandomAccessIterator first, RandomAccessIterator last, Compare comp );

push_heap() предполагает, что последовательность, ограниченная диапазоном [first,last-1), – хип и что новый добавляемый к хипу элемент находится в позиции last-1. Все элементы в диапазоне [first,last) реорганизуются в новый хип. Перед вызовом push_heap() необходимо вставить новый элемент в конец контейнера, возможно, применив функцию push_back() (это показано в примере ниже). В первом варианте при сравнении используется оператор “меньше”, определенный для типа элементов контейнера; во втором – операция comp.

Алгоритм sort_heap()

template< class RandomAccessIterator > void

sort_heap( RandomAccessIterator first, RandomAccessIterator last );

template< class RandomAccessIterator, class Compare

>

void

sort_heap( RandomAccessIterator first, RandomAccessIterator last, Compare comp );

sort_heap() сортирует последовательность в диапазоне [first,last), предполагая, что это правильно построенный хип; в противном случае поведение программы не определено. (Разумеется, после сортировки хип перестает быть хипом!) В первом варианте при сравнении используется оператор “меньше”, определенный для типа

#include <algorithm> #include <vector> #include <assert.h>

template <class Type>

void print_elements( Type elem ) { cout << elem << " "; }

int main()

{

int ia[] = { 29,23,20,22,17,15,26,51,19,12,35,40 }; vector< int, allocator > vec( ia, ia+12 );

// печатается: 51 35 40 23 29 20 26 22 19 12 17 15 make_heap( &ia[0], &ia[12] );

void (*pfi)( int ) = print_elements; for_each( ia, ia+12, pfi ); cout << "\n\n";

//печатается: 12 17 15 19 23 20 26 51 22 29 35 40

//минимальный хип: в корне наименьший элемент

make_heap( vec.begin(), vec.end(), greater<int>() ); for_each( vec.begin(), vec.end(), pfi ); cout << "\n\n";

// печатается: 12 15 17 19 20 22 23 26 29 35 40 51 sort_heap( ia, ia+12 );

for_each( ia, ia+12, pfi ); cout << "\n\n";

//добавим новый наименьший элемент vec.push_back( 8 );

//печатается: 8 17 12 19 23 15 26 51 22 29 35 40 20

//новый наименьший элемент должен оказаться в корне

push_heap( vec.begin(), vec.end(), greater<int>() ); for_each( vec.begin(), vec.end(), pfi ); cout << "\n\n";

//печатается: 12 17 15 19 23 20 26 51 22 29 35 40 8

//наименьший элемент должен быть заменен на следующий по порядку

pop_heap( vec.begin(), vec.end(), greater<int>() ); for_each( vec.begin(), vec.end(), pfi ); cout << "\n\n";

элементов контейнера, а во втором – операция comp.

}

#

символы......................................................................

 

#include, директива...................................................

 

& (амперсанд).........................................................

 

использование с директивой связывания...........

366

оператор взятия адреса:использование в

 

использование с using-директивой..............

68, 441

определении ссылки................................

106

÷

 

&& (двойной амперсанд)

 

 

 

члены класса

 

оператор логического И................................

146

 

шаблон класса Array..................................................

 

данные-члены....................................................

612

Array_RC, производный класс .......................

1009

изменчивые (mutable)..................................

633

 

 

статические..............................................

642

тип члена....................................................

653

битовые поля.....................................................

662

шаблоны............................................................

848

функции-члены.......................................................

 

встроенные и не-встроенные..........................

623

закрытые и открытые..................................

627

конверторы..................................................

778

специальные функции-члены.........................

628

спецификации исключений для...................

1041

статические..............................................

645

тип члена....................................................

650

this........................................................................

 

когда использовать в функциях-членах........

638

использование в перегруженном операторе

 

присваивания..........................................

727

указатель this............................................

637

числа с плавающей точкой...........................................

 

арифметика, характеристики и смежные темы...

145

правила преобразования типов............................

178

стандартные преобразования при разрешении

 

перегрузки функции....................................

467

численные обобщенные алгоритмы.............................

602

читабельность...........................................................

 

разделение обработчиков исключений...............

550

рекурсивных функций......................................

364

квалификатор const для объявления констант....

101

имен перегруженных функций.............................

446

имен параметров.................................................

335

параметров-ссыслок.........................................

346

typedef............................................................

128

в объявлениях указателей на функции..........

381

как синоним контейнерных типпов.....................

304

à

 

адапторы.....................................................................

 

функций, для объектов-функций........................

589

á

 

базовые классы..........................................................

 

абстрактные базовые классы...........................

926

деструкторы...................................................

917

видимость членов....................................................

 

при одиночном наследовании.............................

985

при множественном наследовании.....................

988

видимость классов.................................................

 

при виртуальном наследовании.....................

1001

виртуальные базовые классы.........................

1004

доступ...................................................................

 

к членам......................................................

905

к базовым классам........................................

981

к закрытым базовым классам.........................

980

к защищенным членам.....................................

887

доступ к элементам отображения с помощью..........

308

конструирование.....................................................

 

виртуальное наследование............................

999

одиночное наследование..................................

914

почленная инициализация..............................

945

множественное наследование..........................

967

преобразование к базовому классу.....................

886

преобразование к базовому классу...........................

 

при выведении аргументов шаблона функции...

502

присваивание, почленное присваивание................

947

определение базового класса...................................

 

при виртуальном наследовании.......................

995

при одиночном наследовании.............................

892

при множественном наследовании.....................

972

безопасное связывание...........................................

 

397

перегруженных функций...................................

 

454

à

 

 

адрес(а).....................................................................

 

 

как значение указателя.....................................

 

88

конкретизированных шаблонов функций................

 

499

ä

 

 

деление.......................................................................

 

 

комплексных чисел............................................

 

155

целочисленное...................................................

 

143

декремента оператор (--)..............................................

 

 

префиксная форма......................................

154, 759

постфиксная форма....................................

154, 760

â

 

 

вектор(ы)...................................................................

 

 

емкость, связь с размером................................

 

266

find(), обобщенный алгоритм...............................

 

570

увеличение размера.........................................

 

264

á

 

 

байты.........................................................................

 

 

чтение с помощью get()....................................

 

1082

запись с помощью put()....................................

 

1079

ä

 

 

данные-члены...............................................................

 

 

члены базового и производного классов................

 

896

изменчивые (mutable).......................................

 

633

á

 

 

бесконечный................................................................

 

 

рекурсия........................................................

 

363

цикл, избежание в операциях поиска в строке

...283

à

 

 

абстракция................................................................

 

 

объекта, класс комплексных чисел как пример...

155

стандартная библиотека, преимущества

 

 

использования..............................................

 

166

ä

 

 

деструктор(ы).....................................................

 

705

для элементов массива......................................

 

707

à

 

 

автоматические объекты.............................................

 

 

объявление с ключевым словом register...............

 

403

особенности хранения.........................................

 

401

a

abort(), функция.........................................................

вызов из terminate() как подразумеваемое поведение

abs(), ...................................................................функция

558

 

поддержка для комплексных чисел.....................

157

accumulate(), обобщенный алгоритм.......................

1120

â

 

взятия адреса (&) оператор.......................................

 

использование в определении ссылки..........

105, 106

использование с именем функции.........................

379

взятия индекса оператор ([]).......................................

 

использование в классе bitset...........................

169

использование в отображениях...........................

303

время жизни..........................................................

394

динамически выделенных объектов.....................

 

405

сравнение с указателями на них...................

 

407

auto_ptr, влияние на динамически выделенные

 

объекты......................................................

 

408

и область видимости (глава)............................

 

442

локальных объектов................................................

 

 

автоматических и статических..................

 

401

влияние раскрутки стека на объекты типа

 

класса...................................................

 

557

проблема возврата ссылки на локальный объект

..............................................................

 

360

à

 

 

аргумент(ы)..........................................................

 

331

передача..........................................................

 

357

передача...............................................................

 

 

использование указателей для.......................

 

87

передача по значению........................................

 

338

по умолчанию............................................................

 

 

и виртуальные функции...............................

 

931

и устоявшие функции...................................

 

487

шаблона класса......................................................

 

 

для параметров-констант..............................

 

827

для параметров-типов...................................

 

829

шаблонов функций....................................................

 

 

выведение аргументов..................................

 

505

явная спецификация, недостатки.................

 

507

явная спецификация, мотивировка................

 

507

шаблонов функции....................................................

 

 

явные..........................................................

 

508

òèï........................................................................

 

 

преобразования, разрешение перегрузки

 

функции..................................................

 

474

преобразования, расширение типа.................

 

467

преобразования, ссылок................................

 

473

преобразования, стандартные.......................

 

471

арифметические.........................................................

 

 

исключения......................................................

 

143

объекты-функции..............................................

 

585

преобразования.........................................

176, 180

преобразования.......................................................

 

 

bool â int....................................................

 

110

неявное выполнение при вычислении выражений

..............................................................

 

176

типов, расширение типа перечисления..........

 

113

операции, поддержка для комплексных чисел......

127

операторы.........................................................

 

145

операторы...............................................................

 

 

таблица......................................................

 

142

указатели.........................................................

 

91

a

 

 

adjacent_difference(), обобщенный алгоритм.........

 

1121

adjacent_find(), обобщенный алгоритм...................

 

1123

ä

 

 

друзья.................................................................

 

749

друзья.......................................................................

 

 

и специальные права доступа....................

138, 616

â

видимость...................................................................

роль в выборе функции-кандидата при разрешении

перегрузки функции....................................

474

переменных в условии цикла......................

217, 394

определения символической константы................

400

требование к встроенным функциям.............

365, 400

à

 

 

 

алгоритм(ы)................................................................

 

 

 

функция.................................................................

 

 

 

выведение аргумента шаблона.......................

 

 

504

разрешение перегрузки...............................

 

 

527

шаблон как...................................................

 

 

490

ä

 

 

 

директивы..............................................................

 

 

24

директивы связывания.........................................

 

 

368

в связи с перегрузкой....................................

 

 

452

использование с указателями на функции...........

 

385

ã

 

 

 

глобальное пространство имен.......................................

 

 

 

проблема засорения.....................................

 

66, 419

глобальные функции..............................................

 

 

394

á

 

 

 

бинарные.....................................................................

 

 

 

операторы.........................................................

 

 

141

ä

 

 

 

динамическое выделение памяти....................................

 

 

 

для массива.....................................................

 

 

163

как требование к динамически растущему вектору

динамическое...................................................................освобождение памяти

 

 

261

 

 

 

для массивов....................................................

 

 

416

одиночных объектов...........................................

 

 

408

объектов..........................................................

 

 

419

оператор delete.........................

135, 405, 407, 770

утечка памяти..................................................

 

 

408

á

 

 

 

áëîê............................................................................

 

 

 

инструкций....................................................

 

 

190

комментария........................................................

 

 

24

функциональный try-блок..........................................

 

 

 

и конструкторы.........................................

 

 

1043

try-áëîê............................................................

 

 

553

â

 

 

 

висячий.....................................................................

 

 

 

проблемы висячего else, описание и устранение

. .197

á

 

 

 

битовое поле................................................................

 

 

 

как средство экономии памяти............................

 

 

662

битовый вектор.....................................................

 

 

165

битовый вектор...........................................................

 

 

 

в сравнении с классом bitset.............................

 

 

165

ä

 

 

 

для элементов массива.................................................

 

 

 

динамическое выделение памяти.........................

 

 

710

å

 

 

 

емкость контейнерных типов..........................................

 

 

 

в сравнении с размером.....................................

 

 

261

á

 

 

 

больше (>), оператор...................................................

 

 

 

поддержка в арифметических типах данных.........

30

ä

доступ........................................................................

 

к членам...................................................

615, 624

оператор доступа к членам ->........................

757

к контейнеру..........................................................

последовательный доступ как критерий выбора

òèïà.......................................................

 

260

к массиву..........................................................

 

31

индекс...........................................................

 

45

индексирование............................................

 

114

к пространству имен...............................................

 

 

механизмы, компромиссные решения....................

 

68

уровни, protected...............................................

 

49

a

 

 

algorithm, заголовочный файл................................

 

600

à

 

 

ассоциативность........................................................

 

 

операторов, влияние на вычисление выражений...

176

порядок вычисления подвыражений.....................

 

142

ассоциативные контейнеры...........................................

 

 

неприменимость обобщенных алгоритмов

 

 

переупорядочения.........................................

 

603

ассоциирование...........................................................

 

 

значений, использование класса pair.................

 

129

â

 

 

вставка элементов......................................................

 

 

в вектор..........................................................

 

124

в контейнер, с помощью адапторов функций...........

 

592

в контейнеры multimap и multiset....................

 

321

в отображение..................................................

 

304

â ñòåê.............................................................

 

324

различные механизмы для разных типов контейнеров

...................................................................

 

260

итераторы, обозначение диапазона......................

 

593

встроенные функции...............................................

 

134

перегруженные операторы вызова......................

 

575

объекты-функции......................................

575, 581

объявление.......................................................

 

366

шаблонов функций как...................................

 

496

преимущества...................................................

 

365

определение, размещение в заголовочном файле.....

398

встроенный(е).............................................................

 

 

массивы.................................................................

 

 

запрет присваивания другому массиву.........

 

334

запрет ссылаться на..................................

 

116

отсутствие поддержки операции erase()......

573

типы данных............................................................

 

 

арифметические............................................

 

33

a

 

 

any(), функция............................................................

 

 

в классе bitset................................................

 

168

á

 

 

булевский(е)..............................................................

 

 

стандартные преобразования при разрешении

 

перегрузки функции....................................

 

467

a

 

 

aункции......................................................................

 

 

интерфейс.............................................................

 

 

включение объявления исключений в............

 

562

append(), функция......................................................

 

 

конкатенация строк.........................................

 

296

argc, переменная..........................................................

 

 

счетчик аргументов в командной строке.............

368

argv, массив...............................................................

 

для доступа к аргументам в командной строке......

368

assert(), макрос.......................................................

52

at(), функция..............................................................

 

контроль выхода за границы диапазона во время

 

выполнения...................................................

298

atoi(), функция...........................................................

применение для обработки аргументов в командной

строке........................................................

373

â

 

вычисление.................................................................

 

порядок вычисления подвыражений.....................

142

вычитание..................................................................

 

minus, объект-функция....................................

585

выражения..................................................................

 

(глава)............................................................

189

разрешение имен...............................................

390

использование аргументов по умолчанию...............

354

выполнение...................................................................

 

непоследовательные инструкции.........................

20

условное.............................................................

20

a

 

auto_ptr, шаблон класса........................................

413

auto_ptr, шаблон класса..............................................

 

подводные камни..................................................

412

b

back_inserter(), адаптор функции................................

использование в операции вставки push_back() 592

back(), функция..........................................................

 

поддержка очереди...........................................

326

begin(), функция........................................................

 

итератор...............................................................

 

 

возврат с помощью........................................

593

binary_search(), обобщенный алгоритм..................

1124

bind1st(), адаптор функции...................................

588

bitset, класс..............................................................

 

 

заголовочный файл bitset...................................

169

операции..........................................................

 

172

оператор доступа к биту ([]).............................

168

test(), функция................................................

168

to_long(),

функция.........................................

171

to_string(),

функция.......................................

171

break...................................................................

 

225

break, инструкция.....................................................

 

сравнение с инструкцией return.......................

357

C

C_str(), функция.........................................................

преобразование объектов класса string в C-строки

C, ÿçûê...................................................................

138

 

символьные строки..................................................

 

динамическое выделение памяти для..............

414

необходимость доступа из класса string........

130

C++, ÿçûê..................................................................

 

введение в (глава).............................................

13

компоненты...............................................................

 

типы данных (глава).....................................

140

предопределенные операторы (таблица)..............

743

std, пространство имен......................................

441

ç

заголовочные файлы.....................................................

как средство повторного использования объявлений

функций......................................................

 

333

по имени...................................................................

 

 

algorithm.....................................................

 

72

iomanip......................................................

 

137

limits..........................................................

 

145

memory......................................................

 

408

set313

 

 

sstream.....................................................

 

1061

stack...........................................................

 

323

string............................................................

 

68

vector...................................................

69, 122

содержимое.............................................................

 

 

директивы связывания................................

 

367

включение определения шаблона функции,

 

преимущества и недостатки.....................

 

510

объявления............................................

82, 400

объявления явных специализаций шаблонов....

518

запись активации.................................................

 

337

автоматическое включение объектов в...............

 

401

c

 

 

catch-обработчик....................................

62, 550, 553

критерий выбора................................................

 

63

универсальный обработчик...............................

 

561

cerr........................................................................

 

26

представление стандартного вывода для ошибок с

помощью......................................................

 

1058

char *, указатель......................................................

 

 

работы с C-строками символов.............................

 

93

char, òèï.................................................................

 

76

check_range(), пример функции...................................

 

 

как закрытая функция-член...............................

 

51

cпецификации.............................................................

 

 

исключений............................................................

 

 

для документирования исключений................

 

562

cin.........................................................................

 

26

использование итератора istream_iterator........

595

представление стандартного ввода с помощью....

1058

class, ключевое слово..................................................

 

 

использование в параметрах-типах шаблона..............

 

класса........................................................

 

818

функции......................................................

 

491

использование в определении класса..................

 

610

использование в определении шаблона класса......

819

typename как синоним.......................................

 

494

const, квалификатор...................................................

 

 

вопросы разрешения перезагрузки функций.............

 

ранжирование преобразований, связанных с

 

инициализацией ссылочных параметров....

487

константные параметры............................................

 

 

передача массива из константных элементов..346 параметры-ссылки с квалификатором const..341,

351 константные объекты, динамическое выделение и

освобождение памяти.....................................

416

контейнеры, необходимость константного итератора

...................................................................

591

преобразование объектов в константы.................

102

сравнение с volatile.........................................

128

ссылка, инициализация объектом другого типа...

106

указатели на константные объекты....................

102

copy(), обобщенный алгоритм.................................

1125

copy(), обобщенный алгоритм.........................................

 

использование класса inserter..........................

314

count_if(), обобщенный алгоритм...........................

1130

count(), обобщенный алгоритм

................................1127

count(), обобщенный алгоритм.......................................

использование istream_iterator и ostream_iterator

...................................................................

597

использование с множествами.............................

315

count(), функция........................................................

 

в классе bitset................................................

168

cout.......................................................................

26

представление стандартного вывода с помощью. .

1058

ð

 

разрешение перегрузки функции...........................

457

(глава)............................................................

488

выбор преобразования........................................

784

устоявшие функции..........................................

481

для вызовов операторных функций.................

806

для вызовов функций-членов.........................

799

функции-кандидаты................................................

 

для вызовов функций-членов.........................

796

явные приведения как указания компилятору.......

465

Ð

Разрешения области видимости оператор (...................

):доступ к шаблону функции как члену пространства

èìåí.............................................................

 

540

ð

 

 

разыменования оператор (*)..........................................

 

 

использование с возвращенным типом указателя...

379

не требуется для вызова функции....................

 

380

опасности, связанные с указателями..................

 

343

ранжирование..............................................................

 

 

определений шаблона функции.............................

 

521

рассказ об Алисе Эмме.........................................

 

258

рассказ об Алисе Эмме...............................................

 

 

и реализация класса string.............................

 

138

d

 

 

delete, оператор..............................................

35, 164

безопасное и небезопасное использование, примеры407

для одиночного объекта......................................

 

405

для массивов..........................................................

 

 

объектов класса..........................................

 

767

deque (двустороння очередь, дека).............................

 

 

как последовательный контейнер........................

 

329

применение для реализации стека.....................

 

324

do-while, инструкция..........................................

 

224

do-while, инструкция................................................

 

 

сравнение с инструкциями for и while..............

 

214

È

 

 

И, оператор...........................................................

 

142

è

 

 

идентификатор........................................................

 

83

использования в качестве спецификатора типа

 

класса........................................................

 

130

соглашения по именованию......................................

 

83

иерархии....................................................................

 

 

поддержка мезанизма классов............................

 

130

определение............................................................

 

 

идентификация членов.................................

 

897

исключений, в стандартной библиотеке C++

............................................................1046

ë

лексикографическое упорядочение...............................

в обобщенных алгоритмах перестановок...............

602

в обобщенныых алгоритмах сравнения.................

602

ê

 

класс(ы)....................................................................

 

друзья............................................................

748

возвращаемые значения.....................................

361

вопросы эффективности.....................................

734

заголовок..........................................................

610

параметры..............................................................

 

для возврата сразу нескольких значений....

362

вопросы эффективности................................

341

объединение......................................................

661

òåëî.................................................................

610

ë

 

литеральные константы...........................................

78

C-строки...............................................................

 

сравнение с символьными литералами.............

116

f суффикс..........................................................

77

с плавающей точкой............................................

77

U суффикс........................................................

77

ê

китайский язык..........................................................

поддержка двухбайтовых символьных литералов..77

ë

логические встроенные операторы..........................

 

148

логические объекты-функции......................................

 

 

logical_and.....................................................

 

587

logical_not......................................................

 

588

logical_or.......................................................

 

588

è

 

 

именование...................................................................

 

 

соглашения об именовании идентификаторов...........

 

84

ë

 

 

локализация...............................................................

 

 

влияние глобального объекта на.........................

 

361

константной переменной или объекта....................

 

101

на уровне файла, использование безымянного

 

 

пространства имен........................................

 

432

локальная область видимости.........................

389, 394

доступ к членам в глобальной области видимости,

скрытым за локальными объектами.................

 

425

разрешение имени..............................................

 

392

имена в пространстве имен, скрытые за локальными

объектами....................................................

 

428

переменная, неинициализированная......................

 

401

try-áëîê...........................................................

 

551

локальные объекты................................................

 

405

локальные объекты......................................................

 

 

проблема возврата ссылки на.............................

 

360

статические...................................................

 

401

è

 

 

инкремента оператор (++).............................................

 

 

встроенный.......................................................

 

155

инициализация............................................................

 

 

векторов..........................................................

 

122

массива.................................................................

 

 

динамически выделенного...............................

 

414

динамически выделенных объектов классов...

766

многомерного...................................................

 

118

указателей на функции................................

 

381

объектов................................................................

 

 

автоматических..........................................

 

401

автоматических, по сравнению с локальными

статическими........................................

 

404

глобальных, инициализация по умолчанию.......

395

динамически выделенных..............................

 

406

статических локальных..............................

 

403

поведение auto_ptr............................................

 

410

сравнение с присваиванием................................

 

148

ссылок.............................................................

 

105

указателя на функцию......................................

 

379

влияние на спецификацию исключений..........

 

565

вопросы, связанные с перегруженными функциями

..............................................................

 

453

ê

 

 

командная строка.........................................................

 

 

класс..............................................................

 

377

опции......................................................................

 

 

пример программы..........................................

 

375

конкретизация............................................................

 

 

шаблона функции...............................................

 

497

Ê

 

 

Конкретизация...........................................................

 

 

шаблона функции.....................................................

 

 

разрешение перегрузки...............................

 

529

ê

 

 

копирование.................................................................

 

 

как операция инициализации.............................

 

266

массивов..........................................................

 

116

строк.................................................................

 

97

копирующий.................................................................

 

 

конструктор...............................................

 

43, 132

для динамического увеличения размера вектора

..............................................................

 

263

комментарии.............................................................

 

26

комментарии.................................................................

 

 

блочные..............................................................

 

25

комплексные числа...........................................

 

19, 127

выражения с участием.....................................

 

155

заголовочный файл complex..............................

 

126

как абстракция класса.....................................

 

30

представление.................................................

 

157

операции..........................................................

 

158

типы данных........................................................

 

30

композиция...................................................................

 

 

объектов..........................................................

 

982

сравнение с наследованием................................

 

978

константы...................................................................

 

 

литерал.............................................................

 

79

константные выражения..........................................

 

 

размер массива должен быть........................

 

114

sizeof() как пример......................................

 

163

подстановка......................................................

 

399

ссылки, рассматриваемые как..........................

 

105

конструктор(ы)...........................................................

 

 

для базовых классов..............................................

 

 

при единичном наследовании...........................

 

913

почленная инициализация..............................

 

947

для элементов массива............................................

 

 

список инициализации массива.....................

 

707

вызовы виртуальных функций в........................

 

942

как коверторы..................................................

 

781

копирующие конструкторы.........................

244, 699

почленная инициализация..............................

725

использование с контейнерами multimap и multiset

конструкторы по умолчанию................................

696

...................................................................

 

320

ограничение возможности созданий объектов........

696

extern \.................................................

387, 453, 454

список инициализации членов............................

719

extern, ключевое слово................................................

 

 

контейнерные типы.......................................................

 

как директива связывания...............................

 

366

емкость..................................................................

 

использование с членами пространства имен........

431

связь с размером.........................................

267

объявление.............................................................

 

 

и итераторы....................................................

274

константы....................................................

 

399

инициализация, с помощью пары итераторов........

271

объявления объектов...............................................

 

 

параметры................................................

351, 362

без определения...........................................

 

396

преимущества, автоматическое управление памятью

размещение в заголовочном файле...................

 

398

è ...................................................................

416

f

 

 

 

f, суффикс..................................................................

 

 

инструкции................................................................

 

нотация для литерала с плавающей точкой одинарной

break.....................................................................

 

точности.......................................................

 

77

для выхода из инструкции switch................

208

find_first_of(), обобщенный алгоритм............................

 

 

continue..........................................................

225

нахождение знаков препинания.............................

 

289

do-while.........................................................

223

нахождение первого символа в строке.................

 

282

for219

 

find_last_ of()......................................................

 

288

goto................................................................

227

find_last_not_of()................................................

 

288

объявления.......................................................

193

find(), обобщенный алгоритм..........................................

 

 

простые...........................................................

190

поиск подстроки................................................

 

282

if 20, 205

 

поиск элемента отображения..............................

 

307

инструкция................................................................

 

for, инструкция....................................................

 

218

while.................................................................

21

for, инструкция..........................................................

 

 

èìÿ83

 

использование с инструкцией if........................

 

198

разрешение............................................................

 

front_inserter(), адаптор функции................................

 

 

в области видимости класса........................

669

использование в операции push_front()..............

592

квалифицированные имена.........................................

 

front(), функция..........................................................

 

 

членов вложенных пространств имен...............

428

поддержка очереди...........................................

 

325

статических членов класса........................

640

fstream, класс...........................................................

 

 

шаблонов функций как членов пространства имен

файловый ввод / вывод.....................................

 

1059

..............................................................

540

full(), функция............................................................

 

 

перегруженные операторы.................................

744

модификация алгоритма динамического роста стека

переменной...........................................................

84

...................................................................

 

327

параметра шаблона..................................................

 

g

 

 

функции

493

 

 

getline(), функция

279, 1084

e

 

 

goto, инструкция.................................................

 

228

end(), функция...........................................................

 

greater_equal, объект-функция.............................

 

587

итератор, использование...................................

269

greater, объект-функция.......................................

 

586

endl, манипулятор потока iostream............................

27

î

 

 

è

 

 

 

 

очереди................................................................

 

326

использование преобразования квалификаторов........

463

очереди......................................................................

 

 

использование шаблонов.............................................

62

очереди с приоритетами............................

325, 326

итератор с произвольным доступом...........................

599

queue, заголовочный файл.................................

 

325

итератор(ы).........................................................

125

size()...............................................................

 

325

адаптор............................................................

573

top(), функция.................................................

 

326

абстракция, использование а обобщенных алгоритмах

очередь с приоритетами........................................

 

325

для обхода...................................................

568

size()...............................................................

 

325

доступ к подмножеству контейнера с помощью.......

270

ï

 

 

категории

599

 

 

перечисления

 

114

категории..............................................................

 

 

двунаправленный итератор...........................

599

расширение типа при разрешении перегрузки

 

итератор чтения.........................................

598

функции......................................................

 

466

итератор записи.........................................

598

основания для включения в язык........................

 

111

однонаправленный итератор............................

599

переменные...................................................................

 

 

end(), доступ к элементам контейнера.................

269

константные......................................................

 

101

iterator, заголовочный файл...............................

594

параметр(ы)................................................................

 

 

требования к поведению, выдвигаемые обобщенными

размер, важность для передачи по значению.......

338

алгоритмами.................................................

600

параметры функций......................................................

 

355

e

 

использования многоточия...................................

 

 

при разрешении перегруженных функций...........

444

equal_range(), обобщенный алгоритм.............................

 

проверка типов..................................................

 

337

сравнение параметров указательного и ссылочного

типов...........................................................

346

сравнение с глобальными объектами...................

363

списки параметров............................................

335

ссылки....................................................

109, 343

ссылки..................................................................

 

использование для возврата нескольких

 

значений.................................................

199

на константы................................................

342

преимущества в эффективности....................

341

указатели.......................................................

339

указатели на функции......................................

385

перестановки, обобщенные алгоритмы.......................

605

î

 

обратная косая черта (...............................................

 

как префикс escape-последовательности.............

77

обратные итераторы..............................................

593

область видимости......................................................

 

видимость класса..................................................

 

и определение класса...................................

610

параметра шаблона..................................................

 

функции......................................................

496

объявлений исключений в catch-обработчиках...556

управляющих переменных в инструкции for........

392

область видимости глобального пространства имен..389, 419

í

наилучшая из устоявших функций.........................

456

неоднозначность...........................................................

 

перегруженных.......................................................

функций, диагносцирование во время разрешения

перегрузки............................................

 

468

шаблона функции.....................................................

 

 

конкретизация, опасность перегрузки..........

 

521

указателя, стандартные преобразования...........

 

470

î

 

 

обобщенные алгоритмы...................................................

 

 

генерирования..................................................

 

602

алфавитный указатель (приложение)...............

 

1202

работа с хипом..................................................

 

603

категории и описания........................................

 

603

использование итераторов.................................

 

599

независимость от типа..............................

568, 569

обзор................................................................

 

572

пример использования........................................

 

581

нотация для диапазона элементов........................

 

599

удаления..........................................................

 

602

ì

 

 

меньше, оператор..........................................................

 

 

поддержка в арифметических типах данных........

30

требование о поддержке типом элементов контейнера

...................................................................

 

268

ï

 

 

память........................................................................

 

 

утечка..............................................................

 

35

ì

 

 

массив(ы)...................................................................

 

 

в сравнении с векторами...................................

 

123

динамическое выделение и освобождение...................

 

 

массивов объектов классов...................

710, 770

размер, не является частью типа параметра....

346

как параметры функций.....................................

350

для передачи нескольких параметров............

362

преобразование массива в указатель............

462

многомерные...................................................

349

индексирование...........................................

31, 117

индексирование.......................................................

 

отсутствие контроля выхода за границы

 

диапазона................................................

117

инициализация...........................................

31, 116

динамически выделенных массивов объектов

класса...................................................

710

использование оператора sizeof().......................

160

перегруженный оператор.........................................

 

new[].........................................................

768

обход......................................................................

 

с помощью пары итераторов............................

272

с помощью манипуляции указателем................

119

объектов класса..............................................

712

поддержка обобщенными алгоритмами....................

569

определение................................................

30, 114

многомерные........................................................

119

связь с типом указателей................................

122

указателей на функции.....................................

382

î

 

обход..........................................................................

 

заполнение множества с помощью..........................

314

использование с контейнерами multimap и multiset

...................................................................

319

невозможность обхода перечислений...................

113

параллельный обход двух векторов....................

305

обход отображения............................................

312

множества........................................................

316

отображения текста на вектор позиций..............

310

объект(ы)...................................................................

 

члены пространства имен...................................

421

автоматические...............................................

402

использование памяти..........................................

82

переменные как....................................................

81

определение........................................................

87

объектно-ориентированное программирование....................

 

проектирование.......................................................

 

(пример)........................................................

55

объектное программирование....................................

609

объекты-функции..................................................

590

объекты-функции........................................................

 

логические......................................................

587

использование в обобщенных алгоритмах..............

569

источники........................................................

583

functional, заголовочный файл..........................

583

предопределенные..............................................

585

объявление..................................................................

 

инструкция.......................................................

14

объявления..................................................................

 

в части инициализации цикла for....................

216

видимость имени, вводимого объявлением...............

389

и определение...................................................

396

класса bitset.........................................................

 

объектов......................................................

170

локальность.....................................................

192

исключения......................................................

554

перегруженное........................................................

 

оператора....................................................

132

функции......................................................

443

пространства имен............................................

420

сопоставление объявлений в разных файлах.......

396

шаблона функции.....................................................

 

определение используемых имен......................

532

связь с определением...................................

531

требования к размещению явных объявлений

 

конкретизации........................................

512

указателя на функцию......................................

378

включение спецификации исключений в........

564

функции...........................................................

332

задание аргументов по умолчанию...................

352

размещение в заголовочном файле...................

398

функции-члена, перегруженное..........................

795

явной конкретизации...............................................

 

шаблона класса............................................

855

í

 

неявные преобразования типов.................................

178

ï

предостережения........................................................

использование знакового бита в битовых векторах

неопределенность...................................................................порядка вычисления бинарных

167

 

операторов сравнения...................................

147

подводные камни........................................................

 

глобальные объекты.....................................

361

возврата ссылки на объект..........................

360

опасности приведения типов................................

180

представление............................................................

 

строк.................................................................

92

преобразование............................................................

бинарного объекта-функции в унарный, использование

адаптора-связывателя................................

 

588

выведение аргументов шаблона функции..............

501

выбор преобразования между типами классов......

793

квалификаторов......................................................

 

 

влияние на последовательность преобразований

..............................................................

 

484

при выведении аргументов шаблона функции...

502

как точное соответствие при разрешении

 

перегрузки функции....................................

 

473

конверторы.......................................................

 

459

определенное пользователем................................

 

459

множественные, разрешение неоднозначности

 

приведения..................................................

 

482

последовательности................................................

 

 

определенных пользователем преобразований...

785

определенных пользователем, с учетом

 

наследования.........................................

 

1053

стандартных преобразований........................

 

486

с потерей точности, предупреждение компилятора

...................................................................

 

336

стандартное.....................................................

 

471

трансформация I-значения......................................

 

 

ранжирование при разрешении перегрузки

 

функции..................................................

 

482

указателей............................................................

 

 

в тип void* и обратно...................................

 

180

явные преобразования типов...............

144, 177, 180

препроцессор..............................................................

 

 

комментарий............................................................

 

 

парный(/**/)...................................................

 

25

константы...............................................................

 

 

__cplusplus__..............................................

 

23

макросы..................................................................

 

 

шаблоны функций как более безопасная

 

альтернатива.........................................

 

489

предкомпилированные заголовочные файлы............

 

398

приведение(я).......................................................

 

144

для принудительного установления точного

 

 

соответствия..............................................

 

464

выбор конкретизируемого шаблона функции.........

 

500

const_cast, оператор, опасность применения,.......182

dynamic_cast (), оператор..............................

 

1024

dynamic_cast().....................................................

 

 

идентификация класса объекта во время

 

выполнения...............................................

 

184

опасности..........................................................

 

182

сравнение нового синтаксиса со старым.............

 

183

старый синтаксис...........................................

 

185

reinterpret_cast.....................................................

 

 

опасности.....................................................

 

183

reinterpret_cast, оператор................................

 

183

static_cast.............................................................

 

 

сравнение с неявными преобразованиями.........

 

181

static_cast, оператор........................................

 

182

примеры.......................................................................

 

 

класс IntArray..................................................

 

46

IntSortedArray, производный класс................

 

54

класс iStack.........................................................

 

 

преобразование в шаблон stack......................

 

329

поддержка динамического выделения памяти...

327

класс String....................................................

 

140

обработка аргументов в командной строке............

 

370

шаблон класса Array..............................................

 

 

SortedArray, производный класс................

 

1014

функция sort....................................................

 

377

применение для подавления оптимизации....................

 

129

присваивание..............................................................

 

 

векторам, сравнение с встроенными массивами....

124

и поведение auto_ptr.........................................

 

410

комплексных чисел............................................

 

156

оператор.................................................................

 

 

и требования к l-значению..............................

 

82

перегруженный....................................

728, 752

составной....................................................

 

152

последовательному контейнеру............................

 

277

ссылке............................................................

 

108

указателю на функцию............................................

вопросы, связанные с перегруженностью функции

проверка ..............................................................

453

 

òèïà.......................................................................

 

назначение и опасности приведения типов.......

183

параметра....................................................

337

объявления, разнесенного по нескольким файлам

..............................................................

397

неявные преобразования................................

336

отмена с помощью многоточия в списке параметров

..............................................................

354

указателя....................................................

89

программа.................................................................

21

производительность.....................................................

 

auto_ptr..........................................................

410

классы, локальность ссылок.............................

193

компиляции..............................................................

 

при конкретизации шаблонов функций.............

512

контейнеров............................................................

 

компромиссы при выборе контейнера................

260

сравнение списка и вектора.........................

263

определения шаблона функции в заголовочном файле

...................................................................510

сравнение обработки исключений и вызовов функций

ссылок...................................................................

566

 

параметры и типы возвращаемых значений.....

402

указателей на функции...........................................

 

проигрыш по сравнению с параметрами-ссылками

..............................................................

556

проигрыш по сравнению со встроенными функциями

..............................................................

575

сравнение с объектами-функциями.................

582

функций.................................................................

 

передачи аргументов по значению..................

338

производные классы.....................................................

 

конструкторы...................................................

910

присваивание почленное......................................

945

пространства имен.......................................................

 

члены.....................................................................

 

определения.................................................

430

шаблоны функций..........................................

540

требование правила одного определения..........

431

безымянные.............................................................

 

отличие от других пространств имен............

432

глобальное..............................................................

 

проблема загрязнения пространства имен.......

419

вложенные...............................................................

 

и using-объявления.....................................

449

область видимости...........................................

389

определения......................................................

424

определенные пользователем...............................

420

процедурное программирование.......................................

 

(часть 3)........................................................

608

i

 

if, инструкция......................................................

205

I

 

If, инструкция...........................................................

 

условный оператор как альтернатива................

158

ï

 

по умолчанию................................................................

 

аргументы........................................................

354

влияние на выбор устоявших функций................

486

ì

 

модели компиляции........................................................

 

шаблонов класса.....................................................

 

с разделением..............................................

853

шаблонов функций..............................................

514

шаблонов функций....................................................

 

с включением...............................................

510

с разделением..............................................

512

î

 

оператор \.............................................................

146

оператор ввода........................................................

27

оператор вывода...................................................

1062

перегрузка....................................................

1085

оператор вызова функции.......................................

754

операторы...................................................................

 

встроенные.............................................................

 

арифметические..........................................

145

sizeof.........................................................

163

перегруженные.......................................................

 

члены и не-члены класса..............................

743

взятия индекса ([]).....................................

752

вопросы проектирования................................

746

delete.........................................................

766

ï

 

побитовый(е)................................................................

 

оператор И (&).................................................

165

оператор И с присваиванием (&=)..............

153, 165

оператор ИЛИ (!)..............................................

166

оператор ИСКЛЮЧАЮЩЕЕ ИЛИ (^)................

166

оператор НЕ (~)................................................

165

оператор сдвига (<<,>>)..................................

166

операторы.........................................................

167

поддержка в классе bitset...........................

171

повторное возбуждение.................................................

 

исключения......................................................

559

позиция.......................................................................

 

разрешение аргумента по позиции в списке.........

352

î

 

определения.............................................................

16

класса..................................................................

 

сравнение с определением класса..................

618

класса-диспетчера запросов (пример)...............

956

исключений, как иерархий классов................

1031

массива...........................................................

114

объекта...........................................................

395

объектов класса complex................................

127

производного класса..........................................

895

пространств имен..............................................

433

пространств имен....................................................

 

членов.........................................................

430

множеств..........................................................

316

многомерных массивов.........................................

118

последовательных контейнеров...........................

269

typedef............................................................

127

ï

 

поиск..........................................................................

 

подстрок...........................................................

288

rfind().............................................................

287

элементов...............................................................

 

множества....................................................

315

отображения текста....................................

308

Ï

 

ПОО (правило одного определения)..............................

395

ì

 

множество (set), контейнерный тип.................................

 

ограничение на изменение порядка.......................

603

определени........................................................

315

сравнение с отображением.................................

301

size()...............................................................

316

многоточие (...).............................................................

 

использование в типах функций..........................

379

ï

 

последовательные контейнеры.......................................

 

вставка элементов............................................

274

перестановка элементов.....................................

277

обобщенные алгоритмы........................................

278

присваивание...................................................

277

определение......................................................

265

псевдоним(ы)................................................................

 

имен типов, typedef...........................................

128

пространства имен......................................

66, 435

i

insert(), функция........................................................

 

вставка символов в строку...............................

295

реализация.....................................................

274

списки.............................................................

228

inserter, класс.....................................................

314

inserter(), адаптор функции.........................................

 

для вставки с помощью insert()..........................

593

î

 

отрицатели................................................................

 

как адапторы функций.......................................

588

ошибки........................................................................

 

в инструкции if...............................................

195

в циклах..........................................................

200

в циклах................................................................

 

зацикливание................................................

94

бесконечная рекурсия.....................................

363

динамического выделения памяти........................

408

висячие указатели.........................................

402

как избежать.............................................

407

assert(), макрос................................................

233

компиляции, конфликты в области видимости using-

объявления..................................................

451

итератор, использование...................................

232

области видимости, подводные камни using-

 

директивы..................................................

440

массив...................................................................

 

индекс за концом.............................................

95

пропуска.................................................................

 

завершающего нуля в C-строке....................

415

скобок при освобождении динамически выделенного

массива..................................................

416

смещения на единицу при доступе к массиву.........

31

фазы связывания при наличии объявления в

 

нескольких файлах......................................

396

Î

 

Ошибки........................................................................

 

конкретизации шаблона функции........................

499

î

 

отображения.........................................................

319

заполнение.........................................................

302

невозможность переупорядочения........................

603

map, заголовочный файл....................................

302

текста..................................................................

 

определение.................................................

307

i

 

iostream библиотека...................................................

 

ââîä.......................................................................

 

istream_iterator..........................................

595

итераторы.......................................................

598

манипуляторы..........................................................

 

endl..............................................................

27

операторы, сцепление..........................................

27

iostream.h, заголовочный файл, пример

 

использования..............................................

578

isalpha(), функция................................................

211

ctype, заголовочный файл..................................

292

isdigit(), функция.......................................................

 

ctype, заголовочный файл..................................

292

ispunct(), функция......................................................

 

ctype, заголовочный файл..................................

292

isspace(), функция......................................................

 

ctype, заголовочный файл..................................

292

istream_iterator...................................................

596

l

 

l-значение...............................................................

81

как возвращаемое значение, подводные камни........

360

преобразования.................................................

461

преобразование точного соответствия...........

459

точное соответствие при разрешении

 

перегрузки функций...............................

471

оператор присваивания, требования...................

149

трансформация.........................................

464, 483

less_equal, объект-функция..................................

587

less, объект-функция............................................

587

m

 

main()....................................................................

15

map, заголовочный файл..............................................

 

использование с контейнером multimap...............

319

merge(), обобщенный алгоритм.......................................

 

специализированная версия для спискаов..........

604

modulus, объект-функция.....................................

586

multimap (мультиотображение), контейнер.............

322

multiplies, объект-функция...................................

585

Ñ

 

Ñ, ÿçûê......................................................................

 

функции.................................................................

 

указатели на функции..................................

385

ñ

 

сравнения...................................................................

 

объекты-функции..............................................

586

операторы...............................................................

 

поддержка в контейнерах..............................

267

n

 

negate, объект-функция........................................

586

ñ

 

сложения (+) оператор.................................................

 

комплексных чисел............................................

155

символ(ы)....................................................................

 

литералы...............................................................

 

синтаксис записи..........................................

77

массив символов, инициализация................

115, 116

нулевой, для завершения строкового литерала.....78

символы.......................................................................

 

(обратная косая черта знак вопроса)......................

 

escape-последовательность \.........................

77

^ (крышка).............................................................

оператор побитового ИСКЛЮЧАЮЩЕГО ИЛИ 165

^= (крышка равно)..................................................

оператор побитового ИСКЛЮЧАЮЩЕГО ИЛИ с

присваиванием.........................................

165

__STDC__.......................................................

23

_обратная косая черта одиночная кавычка).............

 

escape-последовательность \.........................

77

- (минус).................................................................

использование для обозначения опций в командной

строке...................................................

370

-- (двойной минус)....................................................

 

оператор декремента....................................

153

-= (минус равно)......................................................

 

оператор вычитания с присваиванием............

153

-> (минус правая угловая скобка)...........................

 

оператор \....................................................

757

, (запятая).............................................................

 

неправильное применение для индексации массива

..............................................................

119

оператор......................................................

164

; (точка с запятой).................................................

 

для завершения инструкций........................

189

: (двойное двоеточие):оператор разрешения области

видимости

....................................................426

: (двойное двоеточие):оператор разрешения области

видимости класса..........................................

43

! (восклицательный знак).......................................

 

оператор \............................................

145, 147

?\

(знак вопроса двоеточие):условный оператор 134,

158

 

(знак вопроса двоеточие):условный

 

оператор:сокращенная запись if-else........

203

. (точка)................................................................

 

оператор \......................................................

38

... (многоточие)..................................................

355

для обозначения универсального catch-

 

обработчика...........................................

560

() (круглые скобки)...............................................

использование оператора вызова для передачи

объекта-функции....................................

582

(обратная косая черта a).......................................

 

escape-последовательность \.........................

77

(обратная косая черта n).......................................

 

escape-последовательность \.........................

77

(обратная косая черта v).......................................

 

escape-последовательность \.........................

77

(обратная косая черта)..........................................

 

как escape-символ.......................................

289

[,) (левая квадрнатная, правая круглая скобки).....

для обозначения интервала с включенной левой

границей................................................

599

[] (квадратные скобки)...........................................

для освобождения выделенной под массив памяти

..............................................................

415

оператор взятия индекса ............................

753

оператор взятия индекса:для доступа к вектору

..............................................................

122

оператор взятия индекса:для проверки битов в

битовом векторе......................................

169

оператор взятия индекса:не поддерживается

 

для контейнеров multiset и multimap......

322

оператор индексирования массива, перегрузка в

определении класса массива......................

45

{} (фигурные скобки).............................................

 

как ограничители составной инструкции......

189

использование в объявлениях пространств имен

..............................................................

421

использование в предложении catch...............

552

использование в составной директиве

 

связывания............................................

366

при инициализации вложенного массива..........

118

* (звездочка).........................................................

 

оператор разыменования:доступ к объектам с

 

помощью.....................................................

90

оператор разыменования:как унарный оператор141

оператор разыменования:использование для

 

задания типа возвращаемого значения.......

378

оператор разыменования:приоритет................

120

оператор разыменования:определение указателей

с помощью...................................................

88

оператор умножения:характеристики и

 

синтаксис..............................................

143

*= (звездочка равно)..............................................

 

оператор умножения с присваиванием..............

153

/ (косая черта)......................................................

 

оператор деления:характеристики и синтаксис

/= (косая..............................................................черта равно)

143

 

оператор деления с присваиванием................

153

\\ (двойная обратная косая черта)...........................

 

escape-последовательность \.........................

77

\\ \ 77

 

\\t (обратная косая черта t)...................................

 

escape-последовательность

 

горизонтальнаятабуляция.........................

77

& (амперсанд).........................................................

оператор взятия адреса:как унарный оператор

..............................................................

141

оператор взятия адреса:использование с именем

функции..................................................

165

&& (двойной амперсанд)..........................................

 

оператор логического И................................

142

&= (амперсанд равно)..............................................

 

оператор побитового И с присваиванием:как

 

оператор составного присваивания............

152

% (процент)............................................................

оператор вычисления остатка, характеристики

и синтаксис...........................................

143

%= (процент равно).................................................

оператор вычисления остатка с присваиванием

..............................................................153

+ (ïëþñ).................................................................

оператор сложения:поддержка в арифметических

типах данных.............................................

 

30

++ (двойной плюс)...................................................

 

 

оператор инкремента.............................

153, 761

+= (плюс равно)......................................................

 

 

оператор сложения с присваиванием..............

146

< (левая угловая скобка).......................................

 

 

оператор \....................................

267, 574, 581

<< (двойная левая угловая скобка).........................

 

 

оператор вывода.............................................

 

26

оператор сдвига влево.................................

 

165

<<=(двойная левая угловая скобка равно)...............

 

оператор левого сдвига с присваиванием.......

153

<> (угловые скобки)..............................................

 

 

явный шаблон:применение в специализациях...

514

явный шаблон:спецификации аргументов.........

505

= (равно)................................................................

 

 

оператор присваивания.................................

 

101

оператор присваивания:и l-значение................

82

оператор присваивания:использование с

 

объектами классов....................................

 

39

оператор присваивания:использование с

 

псевдонимами пространств имен..................

 

434

== (двойное равно)...................................................

 

 

оператор равенства:поддержка в

 

 

арифметических типах данных...................

 

30

>> (двойная правая угловая скобка).......................

 

 

оператор ввода...........................................

 

1079

оператор ввода:перегрузка........................

 

1092

оператор сдвига вправо................................

 

165

>>=(двойная правая угловая скобка равно)..............

 

оператор правого сдвига с присваиванием......

153

| (вертикальная черта)..........................................

 

 

оператор побитового ИЛИ..............................

 

165

|= (вертикальная черта равно)..............................

 

 

оператор побитового ИЛИ с присваиванием.....

165

оператор побитового ИЛИ с присваиванием:как

оператор составного присваивания............

153

|| (двойная вертикальная черта).............................

 

оператор логического

ИЛИ:характеристики и

синтаксис..............................................

 

145

оператор логического ИЛИ:вычисление........

146

n

 

 

new оператор..............................................................

 

 

для константных объектов.................................

 

417

для объектов классов.......................................

 

762

использование класса распределителя памяти

 

(сноска)......................................................

 

265

ñ

 

 

сокрытие информации.......................................

39, 614

члены глобальной области видимости, доступ с

 

помощью оператора разрешения области видимости

...................................................................

 

425

вопросы, связанные с вложенными пространствами

èìåí.............................................................

 

427

доступ к.................................................................

 

 

закрытым членам класса..............................

623

имена в локальной области видимости..................

391

параметры шаблона, имена в глобальной области

 

видимости....................................................

 

493

объявление члена пространства имен, обход с помощью

оператора разрешения области видимости.....

424

сравнение с перегрузкой..................................

 

448

во вложенных областях видимости.................

475

списки........................................................................

 

 

как последовательный контейнер........................

269

обобщенные........................................................

 

255

поддержка операций merge() и sort()................

278

merge(), обобщенный алгоритм..................................

 

специализированная реализация для списка.604

сравнение с векторами......................................

 

261

требования к вставке и доступу.......................

260

size()...............................................................

 

227

составные...................................................................

 

 

выражения.......................................................

 

142

присваивания.........................................................

 

 

операторы над комплексными числами..............

156

состояния условий......................................................

 

 

в применении к библиотеке iostream.................

1104

ссылки.......................................................................

для объявления исключения в catch-обработчике

...................................................................

559

как тип возвращаемого значения функции............

359

инициализация.......................................................

 

ссылки на const..........................................

109

сравнение с указателями..................................

105

стек, контейнерный тип..........................................

325

стек, контейнерный тип................................................

 

операции (таблица)..........................................

323

stack, заголовочный файл..................................

323

top(), функция.........................................

155, 323

стека, пример класса............................................

189

статические члены класса........................................

 

указатели на....................................................

655

статические объекты................................................

 

объявление, сравнение с безымянным пространством

èìåí.............................................................

433

статическое выделение памяти................................

33

строки........................................................................

 

append().........................................................

297

assign()...........................................................

 

296

compare().......................................................

 

298

erase().....................................................

276, 294

поиск подстроки.................................

288, 295, 299

insert()............................................................

 

275

replace().........................................................

 

300

swap().....................................................

277, 297

n

 

 

not_equal_to, объект-функция....................................

 

 

(êîä)................................................................

 

586

not2(), адаптор функции..............................................

 

 

как адаптор-отрицатель...................................

 

588

numeric, заголовочный файл..................................

 

601

использование численных обобщенных алгоритмов. 602

ø

 

 

шаблоны классов..........................................................

 

 

(глава)............................................................

 

873

частичные специализации...............................

 

861

члены.....................................................................

 

 

функций......................................................

 

832

вложенные типы.................................................

 

843

и пространства имен..........................................

 

865

параметры........................................................

 

815

параметры-типы...........................................

 

823

объявления друзей в........................................

 

838

модели компиляции..............................................

 

855

модели компиляции...................................................

 

 

с включением...............................................

 

850

с разделением..............................................

 

854

определения......................................................

 

818

разрешение имен в........................................

 

863

статические члены классов............................

 

840

точка конкретизации, для функций-членов........

863

явные.....................................................................

 

 

специализации............................................

 

859

шаблоны функций..........................................................

 

 

(глава)............................................................

 

545

разрешение имен в определениях........................

 

535

разрешение перегрузки при конкретизации.......

530

и пространства имен..........................................

 

540

конкретизации.................................................

 

500

передача объектов-функций шаблону..................

 

584

перегрузка......................................................

 

522

параметры..............................................................

для повышения гибкости обобщенных алгоритмом

..............................................................

581

параметры-константы...................................

491

параметры-типы...........................................

491

определение......................................................

497

тип возвращаемого значения и выведение аргументов

шаблона........................................................

506

явные.....................................................................

 

спецаиализации..........................................

519

ô

 

ôàéë(û)......................................................................

 

ввод/вывод..........................................................

29

входной...................................................................

 

открытие......................................................

29

выходной.................................................................

 

открытие......................................................

29

несколько...............................................................

размещение определения пространства имен в. 423

сопоставление объявлений в..........................

396

ò

òåëî............................................................................

 

 

функции...........................................................

 

331

ó

 

 

угловые скобки (<>)...................................................

 

 

шаблон....................................................................

 

 

использование для определения.......................

 

56

явные.....................................................................

 

 

специализации шаблона................................

 

514

спецификации аргументов шаблона................

 

505

ö

 

 

целые.........................................................................

 

 

расширение типа..............................................

 

179

стандартные преобразования.............................

 

178

при разрешении перегрузки функции............

 

467

типы данных........................................................

 

75

ó

 

 

указатели..............................................................

 

91

адресация.............................................................

 

 

C-строк........................................................

 

93

объектов........................................................

 

89

объектов класса, использование оператора ->

..............................................................

 

619

вектор указателей, преимущества....................

 

263

висячий................................................................

 

 

возвращенное значение, указывающее на

 

 

автоматический объект...........................

 

402

указывающий на освобожденную память..........

 

407

как значение, возвращаемое функцией................

 

382

как итераторы для встроенного массива............

 

273

использование в обобщенных алгоритмах..............

 

121

параметры................................................

339, 345

нулевой указатель...........................................

 

469

нулевой указатель.................................................

 

 

как операнд оператора delete........................

 

407

сравнение со ссылками................................

 

44, 108

sizeof(), использование с..................................

 

162

void*.................................................................

 

90

указатели на члены...............................................

 

655

указатели на члены.....................................................

 

 

указатели на данные-члены...............................

 

651

указатели на функции-члены............................

 

649

указатели на функции...........................................

 

388

вызов по............................................................

 

381

и спецификации исключений.............................

 

566

инициализация.................................................

 

379

на перегруженные функции................................

 

454

написанные на других языках............................

 

386

присваивание...................................................

 

379

сравнение с указателями на данные (сноска)

........88

ö

 

 

öèêë(û)..................................................................

 

20

инструкции..........................................................

 

 

while..........................................................

 

221

завершение............................................................

 

 

break, инструкция......................................

 

223

инструкции...........................................................

 

 

for218

 

 

while............................................................

 

21

ошибки программирования....................................

 

201

условие останова................................................

 

32

ò

òèï.............................................................................

 

точное соответствие.........................................

465

õ

 

õèï...............................................................

163, 405

выделение памяти для массива в........................

413

выделение памяти для объекта в........................

405

исключение bad_alloc......................................

406

обобщенные алгоритмы......................................

1200

См. также обобщенные алгоритмы.................

1200

ò

 

òèï(û).........................................................................

 

арифметические................................................

33

для определения нескольких объектов одного и того

æå òèïà pair................................................

129

bool................................................................

111

C-строка...........................................................

96

имя класса как.................................................

611

использование с директивой препроцессора include

.....................................................................

67

typedef, синоним типа........................................

127

o

 

ofstream, òèï......................................................

1102

ò

 

точка конкретизации...................................................

 

шаблона функции...............................................

534

ó

 

унарные операторы.................................................

141

умножения оператор (*).................................................

 

поддержка в арифметических типах данных

.........30

условный.....................................................................

 

директивы препроцессора...................................

21

инструкция...........................................................

 

switch........................................................

214

оператор (?.............................................................

 

):сравнение с функциями..............................

364

условный оператор.......................................................

 

инструкция....................................................

189

ô

функции......................................................................

возвращаемые значения...........................................

локальный объект, проблема возвращения ссылки

íà...........................................................

360

параметр-ссылка как средство возврата

 

дополнительного значения..........................

340

объект класса как средство вернуть несколько

значений.................................................

363

указатель на функцию.................................

384

вызовы...................................................................

 

заключенные в try-блок................................

552

недостатки..................................................

365

сравнение с обработкой исключений..............

558

рекурсивные....................................................

364

и локальная область видимости.........................

391

локальное хранение...........................................

337

интерфейс.............................................................

 

объявление функции как...............................

333

прототип функции как описание......................

333

имя функции...........................................................

 

преобразуется в указатель........................

379

на другом языке, директивы связывания...........

366

обращение к......................................................

332

объявления.............................................................

 

как члена пространства имен........................

420

объявления перегруженных функций..................

446

и область видимости....................................

452

когда не надо перегружать...........................

448

причины для перегрузки функций.................

443

преобразование функции в указатель................

463

определение......................................................

331

как часть шаблона функции.........................

492

сравнение с объявлениями............................

395

сигнатура.......................................................

335

òèï........................................................................

 

недопустимость возврата из функции............

334

преобразование в указатель на функцию.......

359

тип возвращаемого значения...............................

335

недопустимость указания для конструкторов.688 недостаточен для разрешения перегруженных

функций..................................................

 

445

функции-члены......................................

130, 614, 631

вызов...............................................................

 

132

независимые от типа............................................

 

50

перегруженные.......................................................

 

 

проблемы......................................................

 

448

функции-кандидаты......................................

 

795

модификация для обработки исключений............

547

определение......................................................

 

133

открытые...............................................................

 

 

доступ к закрытым членам с помощью................

40

статические...................................................

 

644

функции-кандидаты.......................................

 

456, 479

для вызовов в области видимости класса...........

789

для перегруженных операторов..........................

 

805

для шаблонов функций,.......................................523

вызов с аргументами типа класса......................

 

787

наследование и................................................

 

1051

p

 

 

pair, класс...........................................................

 

129

plus, объект-функция....................................

 

583, 585

pop_back(), функция..................................................

использование для реализации динамического роста

стека.........................................................

327

push_back(), функция................................................

 

поддержка в контейнерах..................................

265

стеки, использования для динамического выделения

памяти.........................................................

327

push_front(), функция................................................

 

поддержка в списковых контейнерах..................

266

r

 

r-значение...............................................................

81

использование при вычислении выражений.........

141

release()б функция......................................................

 

управление объектами с помощью класса auto_ptr

...................................................................413 reserve(), функция......................................................

использование для установки емкости контейнера

reset(),...................................................................функция

263

 

установка указателя auto_ptr.........................

411

resize(), функция........................................................

 

использование для изменения размера контейнера 267

return, инструкция.....................................................

 

сравнение с выражением throw.........................

547

s

sort(), обобщенный алгоритм..........................................

 

 

вызов...............................................................

 

121

передача объекта=функции в качестве аргумента

...................................................................

 

584

stack, заголовочный файл.......................................

 

323

static_cast, оператор...................................................

 

 

опасности..........................................................

 

182

string, заголовочный файл........................................

 

67

string, строковый тип..............................................

 

99

пустая строка...................................................

 

97

смешение объектов типа string и C-строк............

 

98

substr(), функция.............................................

 

284

switch, инструкция..............................................

 

212

switch, инструкция....................................................

 

 

использование ключевого слова default......

206, 210

t

 

 

this, указатель....................................................

 

637

tolower(), функция.....................................................

 

 

преобразование заглавных букв в строчные.......

292

toupper(), функция.....................................................

 

 

ctype, заголовочный файл..................................

 

292

locale, заголовочный файл.................................

 

292

true, ключевое слово..............................................

 

110

typedef......................................................................

 

 

для улучшения читабельности.........................

 

381

как синоним существующего имени типа...............

 

445

массива указателей на функции........................

 

381

typename.............................................................

 

250

использование с параметрами шаблона функции....

495

u

 

 

unexpected(), функция...............................................

 

 

для обработки нераспознанных исключений.........

 

563

unique_copy(), обобщенный алгоритм............................

 

 

запись целых чисел из вектора в стандартный

 

вывод..........................................................

 

594

unique(), обобщенный алгоритм.....................................

 

 

удаление дубликатов из вектора......................

 

573

using-директивы........................................................

 

 

влияние на разрешение перегрузки функции......

477

using-объявления..................................................

 

436

влияние на разрешение перегрузки функции......

476

для объявления перегруженных функций............

 

450

сравнение с using-директивами........................

 

440

v

 

 

vector, заголовочный файл.......................................

 

69

void...........................................................................

 

 

в списке параметров функции............................

 

335

void*.........................................................................

 

 

преобразование в void* как стандартное

 

 

преобразование............................................

 

470

volatile, квалификатор..........................................

 

128

для типа параметра, в связи с перегрузкой

 

функций......................................................

 

446

использование преобразования квалификаторов...

485

w

 

 

while, инструкция...............................................

 

221

while, инструкция.....................................................

 

 

сравнение с инструкциями for и do-while.........

 

214

ÿ

явное...........................................................................

преобразование.................................................

184

эффективность...........................................................

 

ý

 

сравнение с гибкостью при выделении памяти......

33