Программа 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.

Наши рекомендации