Сохранение в векторе объектов класса

   
На этом шаге мы рассмотрим пример сохранения в векторе объектов произвольного класса.

   
Помимо встроенных типов в вектор можно помещать объекты любого типа, включая объекты классов,
создаваемых программистом. В данном примере вектор используется для хранения объектов класса 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. Результат выполнения приложения

   
Со следующего шага мы начнем знакомиться со списками.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий