Библиотека STL (Standart Template Library) Страница 9. Наш класс в векторе
|
Страница 9 из 12
Наш класс в векторе На данный момент мы использовали в векторе стандартные классы MFC, а как быть для того, чтобы в вектор можно было пеместить произвольный класс ? Для этого нужно соблюдать ряд условий. Минимальные условия. - Конструктор по умолчанию
- Конструктор копий
- Деструктор
Давайте реализуем и попробуем. // СlassVec.cpp : Defines the entry point for the console application. //
#include "stdafx.h" #include "vector" #include "iostream.h"
using namespace std;
class CMyClass { public: CMyClass();// конструктор по умолчанию CMyClass(const CMyClass &my);// конструктор копий CMyClass(int xx,int yy); ~CMyClass();// деструктор int x; int y; };
CMyClass::CMyClass() { x=0; y=0; }
CMyClass::CMyClass(const CMyClass &my) { x=my.x; y=my.y; }
CMyClass::CMyClass(int xx,int yy) { x=xx; y=yy; }
CMyClass::~CMyClass() { }
void main() { vector< CMyClass > v; v.push_back(CMyClass(1,1)); v.push_back(CMyClass(2,2)); v.push_back(CMyClass(3,3)); for (int x=0;x < v.size();x++) cout << v[x].x << " " << v[x].y << endl; };
Естественно, это только самые базовые возможности. Для полного функционирования потребуется перегрузить достаточное количество операций. Довольно много. Как определить необходимость перегрузки данной операции ? Компилятор сам скажет :-)) в виде error :-). Мы знаем, что вектор может работать с архивом, а наш класс пока не умеет, и сортировка вряд ли будет нормальная пока не определены правила, как определить кто старше или больше !!! |