- •Р. Лафоре
- •Глава 1. Общие сведения 32
- •Глава 3. Циклы и ветвления 92
- •Глава 4. Структуры 142
- •Глава 5. Функции 168
- •Глава 6. Объекты и классы 217
- •Глава 7. Массивы и строки 261
- •Глава 8. Перегрузка операций 312
- •Глава 10. Указатели 411
- •Глава 9. Наследование 361
- •Глава 11. Виртуальные функции 476
- •Глава 12. Потоки и файлы 536
- •Глава 13. Многофайловые программы 596
- •Глава 14. Шаблоны и исключения 640
- •Глава 15. Стандартная библиотека шаблонов (stl) 681
- •Глава 16. Разработка объектно-ориентированного по 752
- •Глава 1 «Общие сведения» включает список тем, касающихся uml, с указа- нием их расположения в книге.
- •Глава 1
- •Глава 2
- •Глава 3
- •If внутри циклов
- •If и else во вложенных ветвлениях
- •Глава 4
- •Глава 5 Функции
- •Глава 6
- •Глава 7
- •123456. Россия
- •123456. Россия
- •Глава 8
- •Глава 9
- •Глава 10 Указатели
- •Main() передает адрес переменной var в ptrd в centimize()
- •Centimize() использует этот адрес для доступа к var
- •Глава 11
- •Глава 12
- •Тип:менеджер Фамилия: Александров Номер:1111
- •Тип:Ученый Фамилия: Лебедев Номер:2222
- •Тип:рабочий Фамилия:Шевелев Номер:3333
- •Глава 13
- •Глава 14
- •Много объектов разных классов в памяти Рис. 14.2. Шаблон класса
- •Алгоритмы используют итераторы для работы с объектами контейнеров. Рис. 15.1. Контейнеры, алгоритмы и итераторы
- •Глава 16
- •Глава 1
- •Глава 2
- •Глава 3
- •Глава 4
- •Глава 5
- •Глава 6
- •Глава 7
- •Глава 8
- •Глава 9
- •Глава 10 Ответы на вопросы
- •Глава 11
- •Глава 12 Ответы на вопросы
- •Глава 13 Ответы на вопросы
- •Глава 14 Ответы на вопросы
- •Глава 15 Ответы на вопросы
- •Глава 16
}
}while(choice
!= 'x');
return
0;
}
//
конец main()
а,
б, г.
Вектор,
список, очередь с двусторонним доступом.
Множество,
отображение.
а.
Истинно.
в.
Ложно.
Итераторов.
Функциональный
объект.
в.
Ложно;
он просто возвращает значение.
3,
11.
Дублирующие.
б,
в.
Указывается
на.
Ложно.
Двунаправленный.
*iter++
г.
в.
Истинно.
Итераторов.
Это
строка, используемая для разделения
выводимых значений.
б.
Упорядочивания
элементов.
Истинно.
Пары
(или
ассоциации).
Ложно.
а,
г.
Конструкторов.Глава 15 Ответы на вопросы
Решения
упражнений
1.
Верное решение:
//
ex15_1.cpp
//
тип float хранится в массиве, сортируется
функцией sort()
#include
<iostream>
#include
<algorithm>
using
namespace std;
int
main()
{
int
j = 0, k;
char
ch;
float
fpn, farr[100];
do
{
cout
<< "Введите
число в формате с плавающей запятой:";
cin
>>
fpn;
farr[j++]
= fpn;
cout
<< "Продолжать('y'
или 'n'):";
cin
>>
ch;
}
while(ch
== 'y');
sort(farr,
farr + j);
for(k
= 0; k < j; k++)
cout
<< farr[k] << ",
";
cout
<< endl;
return
0;
}
2.
Верное решение:
//
ex15_2.cpp
//
использование вектора для работы со
//
строками, push_back() и[]
#include
<iostream>
#include
<string>
#pragma
warning
(disable:4786)
//
для Microsoft
#include
<vector>
#include
<algorithm>
using
namespace std;
int
main()
{
vector<string>vectStrings;
string
word;
char
ch;
do
{
cout
<< "Введите
слово:";
cin
>>
word;
vectStrings.push_back(word);
cout
<< "Продолжать
('y' или
'n'):";
cin
>>
ch;
}
while(ch
== 'y');
sort(vectStrings.begin(),
vectStrings.end());
for(int
k = 0; k < vectStrings.size();
k++)
cout
<< vectStrings[k] << endl;
return
0;
}
3.
Верное решение:
//
ex15_3.cpp
//
самодельный алгоритм reverse()
переворачивает список
#include
<iostream>
#include
<list>
using
namespace std;
int
main()
{
int
j;
list<int>theList;
list<int>::iterator
iter1;
list<int>::iterator
iter2;
for(j
= 2; j
< 16; j
+= 2) //
заполнить список: 2, 4, 6,...
theList.push_back(j);
cout
<< "До
переворачивания:";
//
вывести список
for(iter1
= theList.begin();
iter1 != theList.end();
iter1++)
cout
<< *iter1
<< "
";
iter1
= theList.begin();
//
установить на первый эл-т
iter2
= theList.end();
//
установить после последнего
--iter2;
//
перейти на последний
while(iter1
!= iter2)
{
swap(*iter1,
*iter2);
//
поменять начало и конец
++iter1;
//
сдвинуться вперед от начала
if(iter1
== iter2)
//
если четное число элементов
break;
--iter2;
//
сдвинуться назад от конца
}
cout
<< "\nПосле
переворачивания:";
//
вывести список
for(iter1
= theList.begin();
iter1
!= theList.end();
iter1++)
cout
<< *iter1 << "
";
cout
<< endl;
return
0;
}
4.
Верное решение:
//
ex15_4.cpp
//
мультимножество автоматически сортирует
персон,
//
хранящихся по указателям
#include
<iostream>
#include
<set>
#pragma
warning
(disable:4786)
#include
<string>
using
namespace std;
class
person
{
private:
string
lastName;
string
firstName;
long
phoneNumber;
public:
person():
//
конструктор
по
умолчанию
lastName("пусто"),
firstName("пусто"),
phoneNumber(0L)
{
} //
конструктор
с
тремя
аргументами
person(string
lana, string
fina, long
pho):
lastName(lana),
firstName(fina), phoneNumber(pho)
{
}
friend
bool
operator<(const
person&, const
person&);
void
display()const
//
display person 's data
{
cout
<< endl
<< lastName << ",\t
"
<< firstName
