我有一个类(在许多其他事物中)有一个指向 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
但这对我来说似乎效率低下。任何建议将不胜感激。