#ifndef ABSTRACTMASSIV_H#define ABSTRACTMASSIV_H#include <QVector>#include <QString>#include <qmutex.h>class abstractMassiv{public: abstractMassiv(); ~abstractMassiv(); QVector<double*> :: iterator myIterator; // Итератор для сторонних объектов QVector<double*> :: iterator begin(); QVector<double*> :: iterator end(); int add(int); // Создание по номеру (если существует - вернет 1) int add(double*); // Добавление элемента в массив (если существует - вернет 1) int del(int); // Удаление по номеру (если неудачно - вернет 1) int del(double*); // Удаление по элементу (отождествление, если неудачно - вернет 1) double* find(int); // Поиск по номеру double* find(double*); // Поиск по элементу (отождествление) double* operator[](int); // Перегрузка оператора индексацииprotected: bool findPos(int, QVector<double*>::iterator &); // Поиск номера элемента массива (по номеру) bool findPos(double*, QVector<double*>::iterator &);// Поиск номера элемента массива (по элементу) int copy(double*,double*); // Копирование информации из одного элемента в другой QVector <double*> myVector; // Вектор данных QMutex mutex; // Мутекс для массива};#endif // ABSTRACTMASSIV_H
class Massivutil: public QThread{ Q_OBJECT Massiv* linkMXT;public: Massivutil(Massiv* ); void run();protected slots: void work(); // Экстраполяция, обновление};Massivutil::Massivutil(Massiv *a){ linkMassiv=a;}void Massivutil::run(){ QTimer myTimer; myTimer.start(linkMassiv->getRenewPeriod()); connect(&myTimer, SIGNAL(timeout()), this, SLOT(work())); exec();}void Massivutil::work(){ linkMassiv->MassivIterator =linkMassiv->begin(); while(linkMassiv->MassivIterator !=linkMassiv->end()) { if ((*(linkMassiv->MassivIterator))->lifeTime != 0){ if ((*(linkMassiv->MassivIterator))->currentTime > (*(linkMassiv->MassivIterator))->lifeTime){ linkMassiv->del(*(linkMassiv->MassivIterator)); //linkMassiv->MassivIterator++; } else { (*(linkMassiv->MassivIterator))->currentTime+=linkMassiv->getRenewPeriod(); linkMassiv->MassivIterator++; } } else linkMassiv->MassivIterator++; }}