На этом шаге мы рассмотрим пример сохранения в векторе объектов произвольного класса.
Помимо встроенных типов в вектор можно помещать объекты любого типа, включая объекты классов, создаваемых программистом. В данном примере вектор используется для хранения объектов класса three_d.
//--------------------------------------------------------------------------- #include <vcl.h> #include <iostream> #include <vector> #include <winuser.h> #include <conio.h> //необходимо для getch() #pragma hdrstop //--------------------------------------------------------------------------- #pragma argsused using namespace std; class three_d { int x, y, z; public: three_d() { x = y = z = 0; } three_d(int a, int b, int c) { x = a; y = b; z = c; } void show() { cout << x << ", " << y << ", " << z << "\n"; } three_d &operator+(int a) { x += a; y += a; z += a; return *this; } friend bool operator<(three_d a, three_d b); friend bool operator==(three_d a, three_d b); }; // Отображаем координаты X, Y, Z с помощью оператора // вывода для класса three_d. bool operator < (three_d a, three_d b) { return (a.x + a.y + a.z) < (b.x + b.y + b.z); } bool operator==(three_d a, three_d b) { return (a.x + a.y + a.z) == (b.x + b.y + b.z); } int main(int argc, char* argv[]) { vector<three_d> vec; unsigned int i; // Добавляем объекты в вектор. for(i=0; i<10; i++) vec.push_back(three_d(i, i+2, i-3)); // Отображаем содержимое вектора. for(i=0; i<vec.size(); i++) vec[i].show(); cout << endl; // Модифицируем объекты в векторе. for(i=0; i<vec.size(); i++) vec[i] = vec[i] + 10; // Отображаем содержимое модифицированного вектора. for(i=0; i<vec.size(); i++) vec[i].show(); getch(); return 0; } //---------------------------------------------------------------------------
Результаты выполнения этой программы представлены на рисунке 1.
Рис.1. Результат выполнения приложения
Со следующего шага мы начнем знакомиться со списками.