将类型' bar的向量复制到BYTE类型的向量

时间:2014-11-21 14:51:43

标签: c++ stdvector

我有一个成员向量std::vector<BYTE> memberVec

在内部成员函数中,我有一个std::vector类型为bar的结构,每个结构包含四个double值。 我需要将内容fo std :: vector逐字节复制到std::vector<BYTE> foo

这就是我现在所做的,如果你向我展示更多C ++风格的方法,我将非常感激:

    typedef struct{
        double dX1, dY1, dX2, dY2;
    }bar;

        std::vector<bar> oBar;
        //fill  obar
        memberVec.resize(oBar.size()*sizeof(double) * 4);
        BYTE* pData = (BYTE*)&memberVec[i];
        for (int i = 0; i < oBar.size(); i++)
        {
            memcpy(pData, &oBar[i].dX1, sizeof(double));
            pData += sizeof(double);
            memcpy(pData, &oBar[i].dY1, sizeof(double));
            pData += sizeof(double);
            memcpy(pData, &oBar[i].dX2, sizeof(double));
            pData += sizeof(double);
            memcpy(pData, &oBar[i].dY2, sizeof(double));
            pData += sizeof(double);

        }

1 个答案:

答案 0 :(得分:1)

只是做:

memberVec.assign(reinterpret_cast<const char*>(oBar.data()),
                 reinterpret_cast<const char*>(oBar.data() + oBar.size()));