Библиотека STL (Standart Template Library) - Наш класс в векторе
ОГЛАВЛЕНИЕ
Страница 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 :-). Мы знаем, что вектор может работать с архивом, а наш класс пока не умеет, и сортировка вряд ли будет нормальная пока не определены правила, как определить кто старше или больше !!!