mat*_*975 6 c++ stl vector memcpy
我有一个类(在许多其他事物中)有一个指向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;
}
Run Code Online (Sandbox Code Playgroud)
我根本不喜欢这个代码,我真的想用一个替换指针std::vector<unsigned char>.我的问题是,我将如何执行memcpy方面?如果我将一个向量作为参数传递给我的函数,我可以使用迭代器复制它,但我无法控制参数参数类型,所以我坚持使用unsigned char*.有没有办法使用迭代器,或将矢量大小调整到合适的大小,然后访问其内部数组,以便我仍然可以复制数据memcpy?甚至更好的东西使用迭代器?我知道我可以使用一个循环,push_back但这对我来说似乎非常低效.我们将非常感激地收到任何建议.
Mat*_* M. 19
实际上,迭代器是从指针建模的,因此数组中的指针被认为是实现这个RandomAccessIterator概念.
因此:
m_buffer.assign(pArray, pArray + Size);
Run Code Online (Sandbox Code Playgroud)