別の配列からのデータを格納するために削除され、再割り当てされる unsigned char へのポインターを (他の多くのものの中で) 持つクラスがあります。これは関数で行われます
class MyClass {
private:
unsigned char* m_Buffer;
int m_BufferSize;
public:
bool SetBuffer(int iSize, const unsigned char* pArray);
};
bool MyClass::SetBuffer(int iSize, const unsigned char* pArray) {
bool bOK = false;
if (pArray != NULL && iSize > 0) {
delete [] m_Buffer;
m_Buffer = new unsigned char[iSize];
memcpy(m_Buffer,pArray,iSize);
m_BufferSize = iSize;
bOK = true;
}
return bOK;
}
私はこのコードがまったく好きではなく、ポインターをstd::vector<unsigned char>
. 私の質問は、memcpy の側面をどのように実行するかということです。関数に引数としてベクトルを渡す場合、イテレータを使用してコピーできますが、パラメータの引数の型を制御できないため、unsigned char*
. イテレータを使用する方法、またはベクトルを適切なサイズにサイズ変更してから内部配列にアクセスして、引き続きデータをコピーできるようにする方法はありますmemcpy
か? または、イテレータを使用したさらに良いもの?? ループを使用できることはわかっていますpush_back
が、それは非常に非効率的です。どんな提案もありがたく受け取られます。