C++ std::从内存缓冲区复制到向量

C++ std::从内存缓冲区复制到向量,c++,vector,C++,Vector,我试图将二进制数据从mem缓冲区复制到向量 请让我知道以下尝试有什么问题 每次我得到的向量大小都是0 int AhaConnectAPI::unpackDataArray(uint8_t* src, vector<uint64_t> dest, uint32_t destvectorSize, int offset) { cout<<"\nstd::copy"; std::copy(src + offset, src + offset + sizeof(

我试图将二进制数据从mem缓冲区复制到向量

请让我知道以下尝试有什么问题

每次我得到的向量大小都是0

int AhaConnectAPI::unpackDataArray(uint8_t* src, vector<uint64_t> dest, uint32_t destvectorSize, int offset)
{

    cout<<"\nstd::copy";
    std::copy(src + offset, src + offset + sizeof(uint64_t) * length, back_inserter(dest));
    return length * 8;
}

在第一个数据数组中:src的类型为uint8_t*,但在std::copy和dest中使用sizeofuint64_t,偏移量为int。请尝试以下操作:

std::copy(static_cast<uint64_t*>(src) +
              static_cast<uint64_t>(offset),
          static_cast<uint64_t*>(src) +
              static_cast<uint64_t>(offset) + sizeof(uint64_t) * length,
          back_inserter(dest));
补偿可能需要进一步调整。还有,不知从何处出现的长度。

尝试以下方法:

int AhaConnectAPI::unpackDataArray(uint8_t* src, vector<uint64_t>& dest, 
                                   uint32_t destvectorSize, int offset)

您需要通过引用传递向量注释&.

。。。按值获取向量?建议:如果不修改src,则作为指向const的指针传递。您确定这会编译吗?长度指的是向量中没有元素从外部传递,这有意义吗?@MarshelAbraham elements of uint64_t的uint8_t?vector of uint64_t所以是的,没有大小为uint64_t的元素
int AhaConnectAPI::unpackDataArray(uint8_t* src, vector<uint64_t>& dest, 
                                   uint32_t destvectorSize, int offset)