gpt4 book ai didi

c++ - 用于插入的指针包装器

转载 作者:太空狗 更新时间:2023-10-29 20:49:55 25 4
gpt4 key购买 nike

谁能告诉我 C++/STL 中是否有一种数据类型可以让我轻松解决以下问题:

  • 我有一个预分配的连续内存区域,代表一个类型为 T 的对象数组。
  • 我有一个指向该区域的原始指针 ptrEnd,它指向该区域的最后一个对象之后。
  • 我有一个指向该区域内某个位置的指针 ptrCurrent。

现在我想要的是某种包装器类,它可以帮助我将新元素插入到该区域中。它应该有某种“追加”功能,基本上做以下事情

  • 将要插入的对象的值赋给*ptrCurrent
  • 将 ptrCurrent 加一。
  • 如果 ptrCurrent >= ptrEnd,则省略上述步骤。而是返回一个错误(或一个 false 以指示失败)。

我自己可以写这样的东西,但我想先问一下C++ STL中是否有一个类可以让我更优雅地解决这个问题。

感谢您的帮助。

最佳答案

在 C++17 中有一个方便的特性,多态分配器。更具体地说,这就是您想要的:

std::pmr::monotonic_buffer_resource buffer(sizeof(T) * 256);
// Buffer that can hold 256 objects of type `T`.

std::pmr::vector<T> vec(&buffer);
// The vector will use `buffer` as the backing storage.

live godbolt.org example

关于c++ - 用于插入的指针包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57090936/

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