C++ C++;使用memcpy填充结构中的向量

C++ C++;使用memcpy填充结构中的向量,c++,struct,memcpy,C++,Struct,Memcpy,我想用memcpy填充一个结构 结构声明如下: struct udtFeatures { vector<unsigned char>ByteFeatures; }; 然而,memcpy不喜欢这样 编者说: 找不到的匹配转换函数 std::vector<unsigned char, std::allocator<unsigned char>> in void *. std::void*中的向量。 我猜是因为它。ByteFeatures只是一个指针

我想用memcpy填充一个结构

结构声明如下:

struct udtFeatures
{
    vector<unsigned char>ByteFeatures;
};
然而,memcpy不喜欢这样

编者说:

找不到的匹配转换函数

std::vector<unsigned char, std::allocator<unsigned char>> in void *.
std::void*中的向量。
我猜是因为它。ByteFeatures只是一个指针

我该怎么做?

可以使用
memcpy
初始化
std::vector
,但不建议这样做

而是使用:

可以使用
memcpy
初始化
std::vector
,但不可取

而是使用:


你不能用memcpy来填充
std::vector
(好吧,有一种方法,但对你来说,最好还是把它当作不填充)。使用
std::copy
或自己填写。

你不能用memcpy填写
std::vector
(好吧……有一种方法,但你最好把它当作不填)。使用
std::复制
或自己填写

我猜是因为它。ByteFeatures只是一个指针

不,这是因为它不仅仅是一个指针。这是一个向量

我怎么能这样做

如果需要指向向量管理的数组的指针,则这是
uFeatures.ByteFeatures.data()
uFeatures.ByteFeatures[0]
。或者,您可以考虑使用<代码> STD::复制< /代码>。< /P> 在这两种情况下,在将内容复制到向量中之前,请确保向量足够大

我猜是因为它。ByteFeatures只是一个指针

不,这是因为它不仅仅是一个指针。这是一个向量

我怎么能这样做

如果需要指向向量管理的数组的指针,则这是
uFeatures.ByteFeatures.data()
uFeatures.ByteFeatures[0]
。或者,您可以考虑使用<代码> STD::复制< /代码>。< /P>
P< >在任一情况下,确保向量在复制到其中之前足够大。 <代码> uStuts/BuffTe> <代码> [/]代码> < /P> < P> <代码> UFrimes。ByTyTys<代码>应该是代码>和UFrimes。ByTeTy[[ 0 ] < /Calp>< /P> >在C++编程时(作为OC到C),您得到了什么错误?我建议使用
std::copy
而不是
memcpy
,因为前者在面对非原语类型时确实做了正确的事情(与原语一样有效),一个有趣的问题是*为什么要使用
memcpy
?`因为我需要从内存映射文件复制字节,我认为MeMCPY是最快的可用方法。你会得到什么错误?当C++编程(作为OC to C)时,我建议使用<代码> STD::复制< /COD>而不是<代码> MeMCPY < /C> >,因为前者在面对非原始类型时确实做了正确的事情(并且与原语一样有效)。一个有趣的问题是*为什么要使用
memcpy
?`因为我需要从内存映射文件中复制字节,我认为memcpy是最快的方法。
std::vector<unsigned char, std::allocator<unsigned char>> in void *.
std::copy(&m_pVoiceData[iBytePos], &m_pVoiceData[iBytePos + iByteCount],
          std::back_inserter(uFeatures.ByteFeatures));