[英]C++ Using memcpy to fill a vector in a struct
我想使用memcpy填充結構。
結構聲明如下:
struct udtFeatures
{
vector<unsigned char>ByteFeatures;
};
這是我想填充字節的地方:
void clsMapping::FeedFeaturesFromMap(udtFeatures &uFeatures,int uOtherIndex)
{
int iBytePos=this->Content()[uOtherIndex].ByteStart;
int iByteCount=this->Content()[uOtherIndex].ByteCount;
memcpy(uFeatures.ByteFeatures, &((char*)(m_pVoiceData))[iBytePos],iByteCount);
}
但是memcpy不喜歡這樣。
編譯器說:
找不到與之匹配的轉換功能
std::vector<unsigned char, std::allocator<unsigned char>> in void *.
我猜是因為它.ByteFeatures只是一個指針?
我該怎么辦?
我猜是因為它.ByteFeatures只是一個指針?
不,這是因為它不僅是一個指針。 它是一個向量。
我該怎么辦?
如果要指向由向量管理的數組的指針, uFeatures.ByteFeatures.data()
或&uFeatures.ByteFeatures[0]
。 或者,您可以考慮使用std::copy
代替。
無論哪種情況,在將向量復制到其中之前,請確保向量足夠大。
這將有可能使用memcpy
初始化std::vector
,但不可取。
而是使用std::copy
:
std::copy(&m_pVoiceData[iBytePos], &m_pVoiceData[iBytePos + iByteCount],
std::back_inserter(uFeatures.ByteFeatures));
您不能使用memcpy填充std::vector
(嗯。有一種方法,但是對於您來說,最好不要以為是)。 使用std::copy
或自己填寫。
uFeatures.ByteFeatures
應該是&uFeatures.ByteFeatures[0]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.