Программа 68. Использование шаблона векторов
Термин вектор применяется в STL к динамическим массивам. Шаблон класса векторов vector реализует оператор [] доступа к элементу и оператор присваивания. Вектора из элементов конкретного типа создаются инструкциями вида:
vector <int> Numb(N0);
где Numb – имя создаваемого вектора, N0 – число элементов вектора.
В программе создается вектор с числом элементов N0, затем его размер изменяется до N. Вектор заполняется случайными числами, копируется в другой вектор, который затем сортируется.
// Файл STLVctr.cpp
#include <iostream>
#include <vector>
#include <algorithm>
#include <conio.h>
using namespace std;
const int Max = 1000; // Максимальное значение элемента массива
const int N0 = 10; // Первоначальный размер массива
void main()
{
vector <int> Numb(N0); // Numb - массив из N0 элементов типа int
int N; // Количество чисел в массиве
cout << "Input the count of numbers "; // Приглашение ввести размер
cin >> N; // Ввод нового размера массива
// size() возвращает текущий размер
if (Numb.size() != N) // Если текущий размер не равен новому,
Numb.resize(N); // устанавливаем новый размер
// resize(N) изменяет размер массива на новый, равный N
cout << "\nThe Source array\n"; // Исходный массив
for(int i = 0; i < Numb.size(); i++) // Заполнение массива случайными
cout << (Numb[i] = rand() % Max) << ' '; // числами и вывод
vector <int> NumbSort(N); // Еще один массив
NumbSort = Numb; // Новому массиву присваиваем значение старого
sort(NumbSort.begin(), NumbSort.end()); // Сортировка массива
// begin() возвращает итератор на первый элемент,
// end() - на последний
cout << "\n The Sorted array\n"; // Отсортированный массив
for(int i = 0; i < NumbSort.size(); i++) // Вывод отсортированного
cout << NumbSort[i] << ' '; // массива
getch();
}
Далее приведен диалог с программой.
Input the count of numbers 12
The Source array
346 130 982 90 656 117 595 415 948 126 4 558
The Sorted array
4 90 117 126 130 346 415 558 595 656 948 982
Таким образом, STL позволяет легко делать ряд полезных вещей, которые недоступны для базовых типов данных, например, присваивание массивов, их эффективную сортировку и т.п.
Литература
1. Керниган Б., Ритчи Д. Язык программирования Си.– СПб.: «Невский Диалект», 2001.– 352 с.
2. Страуструп Б. Язык программирования C++. – СПб.; М.: «Невский Диалект» – «Издательство БИНОМ», 1999.– 991 с.
3. Шилдт Г. Справочник программиста по C/C++.– М.: Издательский дом «Вильямс», 2000.– 448 с.
4. Павловская Т.А. C/C++. Программирование на языке высокого уровня.– СПб.: Питер, 2003.– 461 с.
5. Подбельский В.В. Язык Си++.– М.: Финансы и статистика, 1996.– 560 с.
6. Прата С. Язык программирования C++. Лекции и упражнения.– Киев: Издательство «ДиаСофт», 2001.–656 с.
7. Уинер Р. Язык Турбо Си. – М.: Мир, 1991. – 380 с.
8. Тондо К. Гимпел С. Язык Си. Книга ответов.– М.: Финансы и статистика, 1994. – 160 с.
9. Тарасов В.Л. Упражнения по языку Си.– Н. Новгород: Изд-во ННГУ, 1996. – 178 с.
10. Культин Н.Б. C/C++ в задачах и примерах.–СПб.: БХВ-Петербург, 2001.–288 с.
11. Лафоре Р. Объектно-ориентированное программирование в C++.–СПб.: Питер, 2003.– 928 с.
12. Архангельский А.Я. Программирование в C++Builder 5.– М.: ЗАО «Издательство БИНОМ», 2000– 1152 с.
Предметный указатель
acos............................................... 47
asin................................................ 47
atan............................................... 47
atan2.......................................... 237
atof............................................. 160
atoi.............................................. 160
atol.............................................. 160
begin()......................................... 304
bool............................................... 46
break............................................. 67
catch........................................... 301
char...................................... 40, 159
CharToOem................................. 38
circle............................................ 141
class............................................ 193
closegraph.................................. 140
clrscr............................................ 136
conio.h........................................ 215
const.............................................. 56
continue........................................ 67
cos................................................. 47
cosh............................................... 47
count()........................................ 304
cout............................................. 253
default.......................................... 66
delete.......................................... 120
delete.......................................... 120
DETECT.................................... 139
DOS............................................. 126
dos.h........................................... 197
double........................................... 43
empty()....................................... 303
end()............................................ 304
endl............................................. 156
equal()........................................ 304
Errors............................................. 29
exp................................................. 47
fabs............................................... 65
false............................................... 46
find()........................................... 304
float...................................... 43, 158
for.................................................. 62
fstream....................................... 255
getbkcolor.................................. 141
getch.................................. 137, 215
getcolor....................................... 140
getdate........................................ 197
getmaxx..................................... 141
getmaxy..................................... 141
good............................................ 258
gotoxy........................................ 136
graphresult................................. 140
if. .................................................. 59
ifstream............................. 123, 255
initgraph..................................... 139
inline........................................... 192
int................................................... 40
ios::app...................................... 256
ios::binary.................................. 184
ios::in................................. 184, 256
ios::out.............................. 184, 256
iostream..................................... 252
iostream.h.................................. 252
isalnum....................................... 161
isalpha........................................ 161
isapper........................................ 161
isdigit........................................... 161
isspace........................................ 161
istream........................................ 252
iterator........................................ 304
leapyear..................................... 200
LIFO........................................... 225
line............................................... 141
log.................................................. 47
long................................................ 40
long double.................................. 43
lower........................................... 160
ltoa.............................................. 211
main.............................................. 17
math.h.......................................... 47
max_size()................................. 303
namespace................................ 228
new..................................... 119, 120
ofstream............................ 123, 255
og10.............................................. 47
operator <<................................ 253
ostream...................................... 252
outtextxy................................... 211
pop.............................................. 225
pow................................................ 47
pragma....................................... 107
pragma argused.......................... 37
pragma hdrstop........................... 37
public.......................................... 194
push............................................ 225
putpixel...................................... 141
rand............................................... 86
RAND_MAX............................... 86
random....................................... 211
randomize.................................... 86
read............................................. 184
resize()........................................ 304
return............................................. 17
Rus................................................ 38
search()....................................... 304
seek_dir...................................... 184
seekg........................................... 184
seekp........................................... 184
setbkcolor.................................. 141
setcolor....................................... 140
sin.................................................. 47
sinh................................................ 47
size()............................................ 303
size_t........................................... 100
sizeof.......................................... 199
sort()............................................ 304
sqrt................................................. 47
srand........................................... 300
std................................................ 230
stdio.h......................................... 252
stdlib.h.......................................... 86
STL............................................. 303
strcmp......................................... 101
strlen........................................... 100
strrev........................................... 154
struct date.................................. 197
switch............................................ 66
tan................................................. 47
tanh............................................... 47
textbackground........................ 136
textcolor..................................... 136
this............................................... 204
throw........................................... 301
time............................................. 300
tolower........................................ 161
toupper....................................... 161
true................................................ 46
try................................................ 301
typedef.............................. 100, 154
unsigned....................................... 40
char........................................... 40
int.............................................. 40
long........................................... 40
using............................................ 229
using namespace...................... 229
Warnings...................................... 29
wherex............................... 183, 258
wherey........................................ 183
while.............................................. 60
window....................................... 136
windows.h.................................... 38
write............................................ 184
адрес.......................................... 110
аргументы по умолчанию...... 92
бинарный поиск...................... 176
блок.............................................. 55
виртуальные функции........... 273
восьмеричные константы....... 41
встроенные функции............. 192
глобальная переменная. 54, 219
двоичный дополнительный код 148
двоичный код с избытком.... 151
деструктор............................... 208
десятичные константы............ 41
директива using....................... 229
директивы препроцессора... 106
драйвер
графический........................ 139
друзья класса.......................... 200
заголовочные файлы............. 224
зона видимости....................... 219
идентификатор.......................... 13
инициализация объектов..... 202
инкапсуляция.......................... 190
инструкция................................. 55
исключение.............................. 301
итератор................................... 304
класс.......................................... 190
базовый................................. 267
инкапсуляция...................... 190
производный....................... 267
ключевые слова........................ 52
командная строка.................. 126
компилятор................................. 16
компиляция................................. 29
константа
строковая............................. 100
константа
символьная............................. 97
константная функция............ 282
константы................................... 56
конструктор копирования 245, 247
конструктор по умолчанию 196
конструкторы.......................... 195
конструкторы встроенных типов 260
контейнер................................. 303
лексема........................................ 12
макрос....................................... 107
манипулятор............................ 156
dec.......................................... 182
hex.......................................... 182
oct........................................... 182
мантисса............................ 43, 158
массив........................................ 112
динамический..................... 120
указателей........................... 115
массивы....................................... 72
мвссивы
двумерные.............................. 74
метод.......................................... 191
множественное наследование 281
модуль.............................. 225, 235
наследование.......................... 267
множественное................... 267
объявление................................. 55
функции................................... 85
объявление using..................... 229
оператор
delete...................................... 120
new......................................... 119
оператор "стрелка"................ 169
оператор "точка".................... 167
оператор запятая...................... 49
оператор присваивания....... 247
оператор разрешения зоны видимости 219
операторы.................................. 48
бинарные................................ 48
унарные.................................. 48
операторы присваивания....... 50
определение............................... 55
отладка........................................ 28
ошибка усечения...................... 45
перегрузка
операторов.......................... 232
операторов ввода/вывода 254
функций................................... 90
переключатель.......................... 66
переменные
автоматические.................... 83
внешние................................... 83
статические............................ 83
переменные................................ 14
перенаправление ввода/вывода 128
пиксель...................................... 138
побитовое
И. ............................................ 152
ИЛИ........................................ 152
исключающее ИЛИ........... 152
отрицание............................ 153
побитовые операторы.......... 151
порядок..................................... 158
порядок числа........................... 43
поток................................. 123, 252
бинарный............................. 123
текстовый............................. 123
правила доступа.................... 204
препроцессор.................... 15, 106
признак конца строки........... 100
приоритеты операторов......... 51
проект.......................................... 36
проекты..................................... 217
пространство имен................ 228
прототип функции.................... 85
процедурное программирование 190
размер
класса.................................... 199
объекта класса................... 199
реверсирование...................... 101
редактор связей......................... 16
рекурсия...................................... 89
свойства.................................... 191
сдвиг влево............................... 153
сдвиг вправо............................ 154
симмвольная константа.......... 96
скрытие данных...................... 193
сортировка................................. 87
ссылка....................................... 118
ссылка на себя........................ 204
стандартная библиотека шаблонов 303
стандартное пространство имен 230
статические имена................. 220
статические члены................. 198
объявление........................... 199
определение........................ 201
статическое связывание....... 274
стек............................................. 225
страж включения.................... 224
строки.......................................... 99
строковая константа............. 100
текстовый режим.................... 135
текущий каталог....................... 25
точность числа.......................... 43
трассировка......................... 31, 36
указатель.................................. 110
указатель на функцию.......... 116
условное выражение............... 50
условный оператор.................. 59
утечка памяти......................... 244
фактические аргументы.......... 80
формальные параметры......... 80
функции-члены....................... 194
функция....................................... 79
определение........................... 79
цветовые константы.............. 135
цикл
do-while.................................... 64
for.............................................. 62
while.......................................... 60
с постусловием..................... 64
с предусловием..................... 60
числа с плавающей точкой... 43
шаблон...................................... 296
векторов................................ 298
динамичеких массивов..... 299
класса.................................... 297
функции....................... 296, 297
шестнадцатеричные константы 41
Владимир Леонидович Тарасов
Программирование на C++
Учебное пособие
Формат 60×84 1/16. Бумага офсетная. Печать офсетная.
Усл. печ. л. 17,9. Уч.-изд. л. 22,8
Тираж 1000 экз. Заказ
Издательство Нижегородского госуниверситета
им. Н.И. Лобачевского
603950, Н. Новгород, пр. Гагарина, 23
Типография Нижегородского госуниверситета.
Лицензия ПД №18-0099 от 04.05.2001
603000, Н. Новгород, ул. Б. Покровская, 37.