C++代码实现,各位dalao

请用std::vector实现一个静态链表,要求包含插入,删除,查找功能

//
//  ActionSubSystem.h
//

#ifndef __ActionSubSystem__
#define __ActionSubSystem__

#include "GameSubSystem.h"
#include "Core.h"
#include "Curve.h"
#include "TimeMgr.h"
#include "BoardEntity.h"
#include "RtReflectionDelegate.h"

typedef RtWeakPtr<class RealObject> RealObjectPtr;

typedef RtReflectionDelegateclass RealObject*> > ActionSubSystemCallback;

class ActionBase : public RtObject
{
public:
    RT_CLASS_DEFINE(ActionBase, RtObject, RtClass);
    
    ActionBase();
    virtual ~ActionBase() {}
    
    void InitWithTarget(RealObjectPtr target,float duration);
    
    virtual bool isDone() const
    {
        return true;
    }
    
    virtual void stop()
    {
        
    }
    
    virtual void step(float dt);
    
    virtual void update(float time)
    {
        
    }
    
    ActionSubSystemCallback _callback;
    RealObjectPtr          _target;
    
protected:
    
    pvztime_t   _duration;
    pvztime_t   _elapsed;
    bool        _firstTick;
};

//////////////////////////////

class ActionEntityFade : public ActionBase
{
public:
    RT_CLASS_DEFINE(ActionEntityFade, ActionBase, RtClass);
    
    ActionEntityFade() : m_bFadeOut(true) {}
    virtual ~ActionEntityFade() {}
    
    void InitWithTarget(RealObjectPtr target,float duration, bool bFadeOut = true);
    virtual bool isDone() const     override;
    virtual void update(float time) override;
    
private:
    
    bool m_bFadeOut;
    
};

//////////////////////////////

class ActionMoveTo : public ActionBase
{
public:
    RT_CLASS_DEFINE(ActionMoveTo, ActionBase, RtClass);
    
    ActionMoveTo();
    virtual ~ActionMoveTo() {}
    
    void InitWithTarget(RealObjectPtr target,float duration, const SexyVector3& position);
    
    virtual bool isDone() const     override;
    virtual void update(float time) override;
    
private:
    SexyVector3 _positionDelta;
    SexyVector3 _startPosition;
    SexyVector3 _previousPosition;
};

//////////////////////////////

typedef struct _ccBezierConfig
{
    //! end position of the bezier
    SexyVector2 endPosition;
    //! Bezier control point 1
    SexyVector2 controlPoint_1;
    //! Bezier control point 2
    SexyVector2 controlPoint_2;
} ccBezierConfig;

class ActionBezierBy : public ActionBase
{
public:
    RT_CLASS_DEFINE(ActionBezierBy, ActionBase, RtClass);
    
    ActionBezierBy() {}
    virtual ~ActionBezierBy() {}
    
    void InitWithTarget(RealObjectPtr target,
                        float duration,
                        const ccBezierConfig& c);
    
    virtual bool isDone() const     override;
    virtual void update(float time) override;
    
protected:
    ccBezierConfig      _config;
    SexyVector3         _startPosition;
    SexyVector3         _previousPosition;
};


class ActionBezierTo : public ActionBezierBy
{
public:
    RT_CLASS_DEFINE(ActionBezierTo, ActionBezierBy, RtClass);
    
    ActionBezierTo() {}
    virtual ~ActionBezierTo() {}
    
    void InitWithTarget(RealObjectPtr target,
                        float duration,
                        const ccBezierConfig& c);
    
protected:
    ccBezierConfig _toConfig;
};

//////////////////////////////

class ActionSubSystem : public GameSubSystem
{
public:
RT_CLASS_DEFINE(ActionSubSystem, GameSubSystem, RtClass);
    virtual ~ActionSubSystem();

void Update() override;
    
    void AddActionMoveTo(RealObjectPtr target,
                         float duration,
                         const SexyVector3& position,
                         ActionSubSystemCallback i_callback = ActionSubSystemCallback());
    
    void AddActionBezierBy(RealObjectPtr target,
                           float duration,
                           const ccBezierConfig& c,
                           ActionSubSystemCallback i_callback = ActionSubSystemCallback());
    
    void AddActionBezierTo(RealObjectPtr target,
                           float duration,
                           const ccBezierConfig& c,
                           ActionSubSystemCallback i_callback = ActionSubSystemCallback());
    
    void AddActionEntityFade(RealObjectPtr target,
                             float duration,
                             bool bFadeOut,
                             ActionSubSystemCallback i_callback = ActionSubSystemCallback());
    
    bool Serialize(const RtSerializeContext& i_serializeContext) override;
    
protected:
void onInitialized() override;
void registerForEvents() override;

private:

    std::vector m_Actions;
    std::vector m_newActions;
    
    //std::vector > m_deadZombies;
};

#endif

谢谢