c ++模板容器memcpy

时间:2013-08-06 07:26:48

标签: c++ templates containers memcpy

我尝试编写容器memcpy函数。 但是,我无法将我的容器作为参数传递。 谁能给我一个提示?

此时,我在类中创建了另外一个名为DIn的函数来放置信息。

我尝试实现删除DIn功能,并使用普通的内存副本来执行此操作。

有人能帮我一个忙吗?

祝你好运 听命

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <assert.h>  

template <typename VECTOR_TYPE = char,int VECTOR_SIZE = 256>
class vector{
private:
    int SIZE;
    VECTOR_TYPE ARRAY[VECTOR_SIZE];
public:
    vector():SIZE(VECTOR_SIZE){
    }
    VECTOR_TYPE& operator[](int nIndex){
        assert(nIndex >= 0 && nIndex < SIZE);
        return ARRAY[nIndex];
    }
    void DIn(VECTOR_TYPE data,int nIndex){
        assert(nIndex >= 0 && nIndex < SIZE);
        ARRAY[nIndex] = data;
    }
    int sizeof_vector(){
        return SIZE;
    }
};

template <typename VECTOR_TYPE,int VECTOR_SIZE1,int VECTOR_SIZE2>
void vector_memcpy(
    vector <VECTOR_TYPE,VECTOR_SIZE1> *target,int tIdx,
    vector <VECTOR_TYPE,VECTOR_SIZE2> source,int sIdx,
    int Length)
{

    int i;
    for(i=0;i<Length;i++)    
        target->DIn(source[sIdx+i],tIdx+i);
}


int main()
{
    vector <int,16> AV;
    vector <int,32> BV;
    int i;

    for(i=0;i<16;i++)
        AV[i] = i*15;

    vector_memcpy(&BV,0,AV,0,16);
    vector_memcpy(&BV,16,BV,0,16);

    for(i=0;i<16;i++)
        printf("%2d: %3d %3d %3d\n",i,AV[i],BV[i],BV[i+16]);

    return 0;
}

0 个答案:

没有答案