#pragma once#include"itkDataObject.h"#include"itkPoint.h"#include"itkWeakPointer.h"#include"itkCommand.h"#include"itkParticleAttribute.h"#include<map>namespaceitk{template<classT>classITK_EXPORTParticleContainer:publicDataObject{public:typedefTDataType;typedefParticleContainerSelf;typedefDataObjectSuperclass;typedefSmartPointer<Self>Pointer;typedefSmartPointer<constSelf>ConstPointer;typedefWeakPointer<constSelf>ConstWeakPointer;itkNewMacro(Self);// itkTypeMacro(ParticleContainer, ParticleAttribute);itkTypeMacro(ParticleContainer,DataObject);inlineT&operator[](size_tk){if(k>=data.size()){data.resize(k+1);}returndata[k];}inlineT&Get(size_tk){return(*this)[k];}unsignedlongintGetSize()const{returndata.size();}protected:ParticleContainer(){}voidPrintSelf(std::ostream&os,Indentindent)const{Superclass::PrintSelf(os,indent);os<<indent<<"ParticleContainer: "<<std::endl;}virtual~ParticleContainer(){};private:ParticleContainer(constSelf&);//purposely not implementedvoidoperator=(constSelf&);//purposely not implementedstd::vector<T>data;};}// end namespace itk