簡體   English   中英

C ++使用memcpy在結構中填充向量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM