Хранение в списке объектов класса

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

   
В данном примере рассматривается список, который используется для хранения объектов типа sumclass.

//---------------------------------------------------------------------------

#include <vcl.h>
#include <iostream>
#include <list>
#include <cstring>
#include <winuser.h>
#include <conio.h> //необходимо для getch()
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
using namespace std;

class sumclass
{
   int a, b;
   int sum;
public:
   sumclass() { a = b = 0; }
   sumclass(int i, int j) { a = i; b = j; sum = a + b; }
   int getsum() { return sum; }
   friend bool operator<(const sumclass &o1,
   	                  const sumclass &o2);
   friend bool operator>(const sumclass &o1,
   	                  const sumclass &o2);
   friend bool operator==(const sumclass &o1,
   	                   const sumclass &o2);
   friend bool operator!=(const sumclass &o1,
   	                   const sumclass &o2);
};

bool operator<(const sumclass &o1, const sumclass &o2)
{
   return o1.sum < o2.sum;
}
bool operator>(const sumclass &o1, const sumclass &o2)
{
   return o1.sum > o2.sum;
}
bool operator==(const sumclass &o1, const sumclass &o2)
{
   return o1.sum == o2.sum;
}
bool operator!=(const sumclass &o1, const sumclass &o2)
{
   return o1.sum != o2.sum;
}

std::string ToRus(const std::string &in)
{
  char *buff = new char [in.length()+1];
  CharToOem(in.c_str(),buff);
  std::string out(buff);
  delete [] buff;
  return out;
}

int main(int argc, char* argv[])
{
  int i;

  list<sumclass> lst1;
  for(i=0; i<10; i++) lst1.push_back(sumclass(i,i));
  cout << ToRus("Первый список: ");
  list<sumclass>::iterator p = lst1.begin();
  while(p != lst1.end())
  {
  	cout << p->getsum() << " ";
  	p++;
  }
  cout << endl;

  // Создание второго списка.
  list<sumclass> lst2;
  for(i=0; i<10; i++) lst2.push_back(sumclass(i*5, i*10));

  cout <<ToRus("Второй список: ");
  p = lst2.begin();
  while(p != lst2.end())
  {
  	cout << p->getsum() << " ";
  	p++;
  }
  cout << endl;
  // Теперь объединяем списки lst1 и lst2.
  lst1.merge(lst2);

  //Отображаем объединенный список.
  cout << ToRus("Объединенный список: ");
  p = lst1.begin();
  while(p != lst1.end())
  {
  	cout << p->getsum() << " ";
  	p++;
  }

  getch();
  return 0;
}
//---------------------------------------------------------------------------

Текст этого примера можно взять здесь.

   
Результаты выполнения этой программы представлены на рисунке 1.


Рис.1. Результат работы приложения

   
Со следующего шага мы начнем рассматривать отображения.



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

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