将第二个数组的元素添加到第一个数组的末尾

时间:2014-10-30 10:36:26

标签: c++ arrays struct

我得到了一个包含结构的2个元素的数组:

typedef struct dataPar
    {
        unsigned long       indexGroup; 
        unsigned long       indexOffset;            
        unsigned long       length;         
    } TDataPar;
TDataPar parReq[2];

typedef struct dataPar2
    {
        unsigned long       data;   
    } TDataPar2;
TDataPar2 parReqData[2];

需要在array1(parReqData)的末尾添加第二个数组(parReq)中的数据 它需要在第一个数组后面 我需要创建一个第三个数组,其中两个数据都在 我想到了一点:BYTE tempArray = new BYTE[sizeof(parReq)+sizeof(parReqData) 然后将两个数组复制到tempArray,只是不知道如何

3 个答案:

答案 0 :(得分:1)

BYTE* tempArray = new BYTE[sizeof(parReq)+sizeof(parReqData)]
memcpy(tempArray, parReq, sizeof(parReq));
memcpy(tempArray + sizeof(parReq), parReqData, sizeof(parReqData));

答案 1 :(得分:1)

谢谢John,工作得很好!!

是否也可以,如果我做的几乎相同,但我使用指针数组而不是固定数组,所以我可以声明一个可变大小的数组: 我有3个阵列

struct dataPar100
{
    unsigned long       indexGroup; 
    unsigned long       indexOffset;    
    unsigned long       length; 
};  
struct dataPar101
{
    unsigned long       data;   
};


unsigned short nrOfSymbols=3;
dataPar100 *parReq100 = new dataPar100[nrOfSymbols];
dataPar101 *parReq101 = new dataPar101[nrOfSymbols];

答案 2 :(得分:1)

抱歉,找到了

BYTE* tempArray2 = new BYTE[nrOfSymbols*(sizeof(*parReq100)+sizeof(*parReq101))];
        memcpy(tempArray2, parReq100, (nrOfSymbols*sizeof(*parReq100)));
        memcpy(tempArray2 + (nrOfSymbols*sizeof(*parReq100)), parReq101, (nrOfSymbols*sizeof(*parReq101)));