211得票17回答
定制C++分配器的引人注目示例?

有哪些非常好的理由可以放弃使用 std::allocator 并选择自定义解决方案?您是否遇到过某些情况,其中正确性、性能、可伸缩性等是绝对必要的?有什么非常聪明的例子吗? 自定义分配器一直是标准库的一个特性,我并没有太多需求。我只是想知道这里的任何人能否提供一些令人信服的例子来证明它们的存在。

176得票3回答
多态分配器:何时以及为什么应该使用它?

这里是关于cppreference的文档,这里是工作草案。 我必须承认,我不太理解polymorphic_allocator的真正目的以及何时/为何/如何使用它。 例如,pmr::vector具有以下签名: namespace pmr { template <class T&...

61得票8回答
向量的数据如何对齐?

如果我想使用SSE处理std :: vector 中的数据,则需要16字节对齐。我如何实现这一点?我需要编写自己的分配器吗?还是默认的分配器已经对齐到16字节边界?

59得票2回答
为什么C++17中std::allocator的构造和销毁函数被弃用了?

c++17规范中弃用了std::allocator对象的成员construct和destroy。在 这里,工作组提供了关于弃用其他成员函数的理由。 然而他们没有明确说明为什么这两个成员被弃用了,也没有提供替换它们功能的建议。我认为暗示使用std::allocator_traits:: con...

59得票3回答
std::vector在增加容量时是否必须移动对象?或者,分配器是否可以“重新分配”?

一个不同的问题启发了以下想法: 当 std::vector<T> 增加其容量时,是否必须移动所有元素? 据我所知,标准行为是底层分配器请求一个新大小的整个块,然后将所有旧元素移动过去,然后销毁旧元素,最后释放旧内存。 在标准分配器界面给出的情况下,这种行为似乎是唯一可能的正确...

59得票4回答
使std::vector分配对齐内存

是否可以使自定义结构体的std::vector分配对齐内存,以便使用SIMD指令进行进一步处理?如果可以使用Allocator来实现,是否有人能够分享这样的allocator?

47得票6回答
基于堆栈缓冲的STL分配器?

我想知道是否有可能使用符合C++标准库的allocator,使用一个存储在栈上的(固定大小的)缓冲区。 不知何故,似乎这个问题在SO上还没有被以这种方式提出过,尽管其他地方可能已经隐含地回答了这个问题。 因此,就我的搜索结果而言,基本上似乎应该可以创建一个使用固定大小缓冲区的分配器。初看之...

40得票7回答
一个 size_type 是否可能比 std::size_t 更大?

使用std::allocator的标准容器将其size_type定义为std::size_t。然而,是否可能有一个分配器来分配大小不能用size_t表示的对象?换句话说,size_type可以比size_t更大吗?

38得票3回答
如何在C++11中编写一个有状态的分配器,并满足复制构造的要求?

据我所知,用于STL容器的分配器的要求在C++11标准的17.6.3.5节的表28中列出。 我对某些要求之间的交互有点困惑。给定一个类型X,它是类型T的分配器,一个类型Y,它是类型U的“相应分配器类”,实例a、a1和a2是X的实例,实例b是Y的实例,表格如下: 1. 表达式a1 == a2...

36得票2回答
std::scoped_allocator_adaptor的目的是什么?

在C++11标准中,动态内存管理库中有一个名为std::scoped_allocator_adaptor的类。这个类最重要的用途是什么?