Углубленное изучение отдельного раздела: стандартные классы С++
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
тах и
// с разным направлением движения
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