gpt4 book ai didi

c++ - 放置新的内存池

转载 作者:太空宇宙 更新时间:2023-11-04 11:54:31 24 4
gpt4 key购买 nike

我最近阅读了有关新安置的信息,我想在我的一项作业中使用它。我不允许使用 STL 容器,所以我想制作一个像容器一样的 vector 。所以假设我在数组中预分配 10 个槽来存储我的对象,然后用户添加 11 个项目。我如何使用 placement new 将前 10 个对象复制到数组中,然后初始化一个新对象并将其添加到 vector 中来存储前 10 个对象?

我用于额外分配空间的当前代码是这样的:

template <class T>
void Vector<T>::allocMem(int objects)
{
T *_new_data = new T[2*capacity];

for(int i = 0; i < size(); i++)
{
_new_data[i] = _data[i];
}

delete [] _data;

_data = _new_data;

capacity = 2*capacity;
}

取而代之的是,我想添加 placement new 的使用。

最佳答案

T *_new_data = (T*)new char[sizeof(T)*2*capacity];

for(int i = 0; i < size(); i++)
{
new (_new_data + i) T(_data[i]);
}

另见 C++ placement new

关于c++ - 放置新的内存池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16745066/

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