Углубленное изучение отдельного раздела: стандартные классы С++

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

тах и

// с разным направлением движения

Car car = Car(getmaxx()/2,getmaxy()/2-120,1,-1);

Car car2 = Car(getmaxx()/2,getmaxy()/2+60,-1,-1);car3 = Car(getmaxx()/4,getmaxy()/2,-1,1);

// Цикл движения всех экземпляров класса

while(!kbhit())

{.draw();.draw();.draw();(50);.clear();.clear();.clear();.run();.run();.run();}();();

}

 

СТАНДАРТНЫЕ КЛАССЫ: VECTOR, STRING

 

STL - это библиотека стандартных шаблонов. Она содержит, например, часто встречающиеся способы организации данных - так называемые контейнеры: динамические массивы, двунаправленные списки, стеки и др. Кроме того, STL содержит множество часто встречающихся алгоритмов: сортировка (как на всем множестве, так и на части его), нахождение минимального и максимального значений и др. Каждый такой алгоритм работает с разными типами контейнеров. Т. е. вы, например, можете использовать один и тот же алгоритм сортировки как для динамического массива, так и для стека.

Класс vector

Вектор (vector) напоминает нам массив, только он способен расти до произвольного размера, поддерживает информацию о размере. Как и массив к вектору можно обратить воспользовавшись операцией индексирования []. Вот характеристики:

Доступ к данных с одинаковой скоростью

Вставка приводит к перемещению элементов

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

Как видите вектор оптимален для получения информации, но при большом количестве вставок лучше воспользоваться другими контейнерами, например, списками. Проблема в том, что физически вектор распологается в непрерывной памяти. На C это реализовывали функциями malloc.

Для работы с вектором необходимо подключить заголовочный файл:

#include "vector"

Объявить рабочую область:

using namespace std;

После этого вектор необходимо объявить, это можно сделать двумя способами:

1)vector vArray1;

)vector vArray2(30);

В первом случае указывается пустой вектор, а во втором начальный размер.

Можно получать информацию о параметрах вектора:

size() - сколько данных храниться

capacity() - сколько может храниться до изменения размера

max_size() - максимальный размер обычно равен наиболее большому доступному блоку памяти

Пример:

#include

#include namespace std;main()

{vArray1;vArray2(30);<< "Size Vector " << vArray2.size() << endl;<< "Capacity Vector " << vArray2.capacity() << endl;<< "Max_Size Vector " << vArray2.max_size() << endl;(int x=1;x<5;x++).push_back(10);<< "Size Vector " << vArray2.size() << endl;<< "Capacity Vector " << vArray2.capacity() << endl;<< "Max_Size Vector " << vArray2.max_size() << endl;

}

Результат:Vector 30Vector 30_Size Vector 1073741823Vector 34Vector 60_Size Vector 1073741823 any key to continue

Как видите, Size показывает, сколько сейчас лежит в векторе чисел. В то время как capacity возвращает инициализированный размер, то есть тот размер, до которого можно добавлять данные без инициализации. Вас не удивило, что размер доступной памяти не изменился!? Это размер доступного блока, а не всей памяти поэтому он и не изменился.

Пример:

#include

// Добавляем нужное пространство имен.

#include namespace std; main()

{

// Объявляем вектор из целых. k;

// Добавляем элементы в конец вектора.

k.push_back(22);.push_back(11);

k.push_back(4);

// Показываем все элементы вектора.

for (int i = 0; i<k.size(); i++)

{<<k[i]<<"\n";

}<<"***\n";

// Удаляем элемент с конца вектора..pop_back();

// Показываем все элементы вектора.

for (i = 0; i<k.size(); i++)

{<<k[i]<<"\n";

}<<"***\n";

// Удаляем все элементы ветораю.clear();

// Проверяем, что вектор пуст.(k.empty)

{<<"Vector is empty\n";

}

}

Класс string

Класс string предназначен для работы со строками.

Для работы со string необходимо подключить заголовочный файл:

#include "string"

Объявить рабочую область:

using namespace std;

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

#include

#include namespace std;main(){s0 = "abcde";

string s1 = " fg";

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

string s = s0 + s1;<<s<<"\n";

// Получаем символ на определенном месте.

char ch0 = s0.at(1);<<ch0<<"\n";ch1 = s0[3];<<ch1<<"\n";

// Выясняем, не пустая ли строка.

if (s0.empty()){<< "String is empty"<<"\n";

}{<< "String isnt empty"<<"\n";

}

// Обмен значения двух строк.(s0, s1);

// Присваиваем и сравниваем 2 строки.= s0;

if(s1 == s0){<< "Strings are equal"<<"\n";

}{<< "Strings are not equal"<<"\n";

}

// Чтение введенной с клавиатуры строки.

getline(cin, s1);<<s1;

// Получение длины строки.<<s1.length();

}

Как видно, работать со строками через класс string достаточно удобно. Можно делать конкатенацию (сложение) строк с помощью обычного оператора +, можно брать символ в определенном месте строки с помощью оператора [] (или другим способом - с помощью метода at), можете использовать привычные операторы =, ==, != для присваивания и сравнения строк. Также имеются методы для получения длины строки, для выяснения, не пустая ли это строка и др. Следует обратить внимание также на весьма полезный метод getline, который позволяет прочитать строку из определенного потока (с клавиатуры в приведённом выше примере).

 

ЛИТЕРАТУРА

 

1.Страуструп Б. Язык программирования C++. Специальное издание = The C++ programming language. Special edition. - М.: Бином-Пресс, 2007. - 1104 с. - ISBN 5-7989-0223-4

2.Герберт Шилдт. Полный справочник по C++ = C++: The Complete Reference. - 4-е изд. - М.: Вильямс, 2006. - 800 с. - ISBN 0-07-222680-3

3.Керниган Б., Ритчи Д. Язык программирования Си = C programming language. - 2-е изд. - М.: Вильямс, 2007. - С. 304. - ISBN 0-13-110362-8

4.">Википедия - Интернет энциклопедия.

.">Интернет Университет Информационных Технологий - <ht