gpt4 book ai didi

c++ - 正确分配 vector 中的内存

转载 作者:可可西里 更新时间:2023-11-01 17:50:25 24 4
gpt4 key购买 nike

我正在尝试实现 std::vector作为编程练习。

考虑以下代码片段:

template <class T, class Allocator = std::allocator<T>>
class vector
{
public:
using size_type = size_t;
using allocator_type = Allocator;
...
private:
T* m_data;
allocator_type m_alloc;
size_type m_capacity;
...
};

m_data类型为 T* .我需要使用 std::allocator_traits<allocator_type>::allocate(m_alloc, m_capacity) 分配内存返回 std::allocator_traits<allocator_type>::pointer .

我可以假设 pointer可以隐式转换为 T*并分配从 allocate 返回的值至 m_data

如果不是,如何在 vector 中正确分配内存?

最佳答案

您应该使您的m_data 成员成为Allocator::pointer。 (如果你想遵循标准接口(interface),你可能应该在你的 vector 中创建该类型的本地别名。)

存在类型是因为某些分配器不处理原始指针,例如 Boost.Interprocess 共享内存分配器,它可能根据配置使用智能指针。

关于c++ - 正确分配 vector 中的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32742671/

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