10得票2回答
当涉及到分配器时,是否有类似于复制并交换惯用语的东西?

关于copy-and-swap技巧,有几篇很棒的答案,例如解释copy and swap技巧和解释移动语义。同时适用于复制和移动赋值的基本技巧如下: T& T::operator=(T other) { this->swap(other); return *th...

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

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

12得票6回答
C++中高效的数组重新分配

我该如何高效地调整使用符合标准的C++分配器分配的数组大小?我知道在C++分配器接口中不提供重新分配功能,但是C++11修订版是否使我们能够更轻松地处理它们?假设我有一个带有复制赋值运算符foo& operator =(const foo& x)定义的类vec。如果x.size...

13得票7回答
字符串容量值的用途

在C++标准库中,std::string有一个公共成员函数capacity(),该函数返回内部分配存储的大小,这个值大于或等于字符串中的字符数(参见这里)。这个值可以用来做什么?它是否与自定义分配器有关?

9得票1回答
一些STL容器的std::allocator不匹配

在STL容器的模板参数中,使用不匹配的std::allocator特化(当然,除了针对void的特化)在技术上是否有效?以下代码可以编译通过,但只适用于下列枚举的容器:unordered_(multi)map/set。 #include <list> #include <f...

16得票1回答
标准库设施中分配但不使用分配器的内容

在C++标准库分配内存的大多数地方,用户都可以通过提供一个符合Allocator要求的类来自定义内存分配。例如,几乎所有容器都需要一个allocator模板参数,并且std::allocate_shared返回一个shared_ptr,其包含的元素和控制块都是通过提供的Allocator分配的...

7得票1回答
C++ allocator<X>::deallocate(NULL,1) 允许吗?

既可以使用free(NULL),也可以使用::operator delete(NULL)。分配器概念(例如std::allocator)是否也允许使用deallocate(NULL,1),还是需要自己添加保护措施?

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

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

12得票2回答
斯蒂芬·拉瓦维奇的Mallocator在C++11中是否相同?

8年前,Stephen Lavavej发布了一个名为“Mallocator”的简单分配器实现的博客文章。自那以后,我们已经过渡到C++11(很快就会是C++17)时代......新的语言特性和规则是否会影响Mallocator,还是仍然与原来一样相关?

9得票2回答
用于对齐内存块的std::align和std::aligned_storage

我正在尝试分配一个大小为size的内存块,需要对齐到Alignment,其中大小可能在编译时未定义。我知道有一些例程,例如_aligned_alloc,posix_memalign,_mm_alloc等,但我不想使用它们,因为它们会降低代码的可移植性。 C ++ 11 提供了一个例程std::...