TaskArray.h
			
#pragma once
#include <vector>
using namespace std;
class TaskArray
{
private:
	vector<int> LiveTaskArray;
	vector<int> DeadTaskArray;
	int DeadTaskBegin;
	vector<int> IteratorArray;
	int IteratorSize;
public:
	TaskArray(int size);
	~TaskArray();
	void Init(int size);
	int AddTask();
	int KillTask(int index);
	int GetLiveTask(int index);
	int GetDeadTask(int index);
	int GetIterator(int index);
	int GetDeadTaskBegin();
	int GetIteratorSize();
};
TaskArray.cpp
#include "TaskArray.h"
TaskArray::TaskArray(int size)
{
	LiveTaskArray.resize(size, -1);
	IteratorArray.resize(size, -1);
	DeadTaskArray.resize(size + 1,-1);
	for (int i = 0; i < size; i++){
		DeadTaskArray[i] = i;
	}
	DeadTaskBegin = 0;
	IteratorSize = -1;
}
TaskArray::~TaskArray(){}
void TaskArray::Init()
{
	for (int i = 0; i < LiveTaskArray.size(); i++){
		LiveTaskArray[i] = -1;
		DeadTaskArray[i] = i;
		IteratorArray[i] = -1;
	}
	DeadTaskBegin = 0;
	IteratorSize = -1;
}
int TaskArray::AddTask(){
	if (DeadTaskBegin < DeadTaskArray.size() - 1){
		IteratorSize++;
		LiveTaskArray[DeadTaskArray[DeadTaskBegin]] = IteratorSize;
		IteratorArray[IteratorSize] = DeadTaskArray[DeadTaskBegin];
		DeadTaskBegin++;
		return IteratorArray[IteratorSize];
	}
	return -1;
}
int TaskArray::KillTask(int index){
	if (index < LiveTaskArray.size() && index >= 0){
		IteratorArray[LiveTaskArray[index]] = IteratorArray[IteratorSize];
		LiveTaskArray[IteratorArray[IteratorSize]] = LiveTaskArray[index];
		DeadTaskBegin--;
		DeadTaskArray[DeadTaskBegin] = index;
		IteratorArray[IteratorSize] = -1;
		LiveTaskArray[index] = -1;
		IteratorSize--;
		return 0;
	}
	return -1;
}
int TaskArray::GetLiveTask(int index){return index < LiveTaskArray.size() ? LiveTaskArray[index] : -1;};
int TaskArray::GetDeadTask(int index){return index < DeadTaskArray.size() ? DeadTaskArray[index] : -1;};
int TaskArray::GetIterator(int index){return index < IteratorArray.size() ? IteratorArray[index] : -1; };
int TaskArray::GetDeadTaskBegin(){ return DeadTaskBegin; };
int TaskArray::GetIteratorSize(){ return IteratorSize; };
			閉じる