gpt4 book ai didi

c++ - 我怎样才能将原始数组的 memcpy 等效于 std::vector?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:05:03 25 4
gpt4 key购买 nike

我有一个类(除其他外)有一个指向 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 方面?如果我将一个 vector 作为参数传递给我的函数,我可以使用迭代器复制它,但我无法控制参数参数类型,所以我坚持 unsigned char* .有没有一种方法可以使用迭代器,或者将 vector 的大小调整到合适的大小,然后访问它的内部数组,以便我仍然可以使用 memcpy 复制数据? ?或者甚至更好的东西使用迭代器?我知道我可以使用循环和 push_back但这对我来说似乎效率低下。我们将不胜感激地收到任何建议。

最佳答案

实际上,迭代器是从指针建模的,因此数组中的指针被认为是实现 RandomAccessIterator 概念。

因此:

m_buffer.assign(pArray, pArray + Size);

关于c++ - 我怎样才能将原始数组的 memcpy 等效于 std::vector?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12035276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com