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