c++ 模板

来源:互联网 发布:知乎如何盈利 编辑:程序博客网 时间:2024/06/05 02:50

#ifndef TEST_H

#define TEST_H

template<typename T>class Array

{

private:

    T* parray;                //定义动态数组

    int room;                //存储空间大小的值

public:

    Array()

        :room    (0)

        ,parray    (NULL)

    {

        parray=(int*)malloc(sizeof(int)*room);

    }

    ~Array()

    {

        if(parray!=NULL)

            free(parray);

    }

    int push_back(T m)        //推入一个数组元素

    {

        room++;

        parray=(T*)realloc(parray,sizeof(T)*room);

        *(parray+room-1)=m;

        return *(parray+room-1);

    }

    int sizeof_Array()            //得到数组大小

    {

        return room;

    }

    bool remove(int k)            //删除第k个元素

    {

        printf("删除元素%d后",k);

        if(k>room-1 || k<0)

        {

            return false;

        }

        else

        {

            memmove(parray+k,parray+k+1,sizeof(T)*(room-1-k));

            room-=1;

            return true;

        }

    }

    bool insert(int k,T element)        //插入一个元素

    {

        printf("插入元素%d后",k);

        if(k>room || k<0)

        {

            return false;

        }

        else

        {

            room++;

            parray=(T*)realloc(parray,sizeof(T)*room);

            memmove(parray+k+1,parray+k,sizeof(T)*(room-1-k));

            *(parray+k)=element;

        }

    }

    T query(int k)                //查询第k个元素的值

    {

        if(k>room-1 || k<0)

        {

            return -1;

        }

        else

        {

            return *(parray+k);

        }

    }

    void display()                //显示数组内元素个数

    {

        for(int i=0;i<room;i++)

            cout<<query(i)<<endl;

        cout<<"数组内元素个数"<<sizeof_Array()<<endl;

    }

    T* begin()

    {

        return parray;

    }

    T* end()

    {

        return parray + room;

    }

};

#endif

 test.cpp

#include<iostream>

#include"test.h"

using namespace std;

void main()

{

    Array<int> intArray;

    intArray.push_back(1);

    intArray.push_back(2);

    intArray.push_back(3);

    intArray.push_back(4);

    intArray.push_back(5);

    intArray.push_back(6);

    intArray.push_back(7);

    intArray.push_back(8);

    intArray.push_back(9);

    /*intArray.display();

    intArray.remove(3);

    intArray.display();

    cout<<intArray.begin()<<endl;

    cout<<intArray.end()<<endl;

    int* ite=NULL;

    for(ite=intArray.begin();ite!=intArray.end();ite++)

    {

        printf("%d ",*ite);

    }

    for(ite=intArray.end();ite!=intArray.begin();ite--)

    {

        printf("%d ",*ite);

    }*/

}

原创粉丝点击