std :: vector :: shrink_to_fit()不检查分配器是否相等

时间:2018-12-22 10:29:33

标签: c++ c++14 stdvector allocator

我有自己的堆栈分配器,该堆栈分配器可以与除std::vector::shrink_to_fit()以外的测试用例一起使用

shrink_to_fit()尝试使用不同于原来分配内存的状态分配器来分配内存。

我的理解是,在从一个分配器分配的内存通过另一分配器释放之前,容器必须检查分配器是否相等。我错了吗?

引用来自:https://en.cppreference.com/w/cpp/named_req/Allocator

  

a1 == a2仅在分配器a1分配的存储可以是   通过a2释放。建立反身,对称和   传递关系。不抛出异常。

在我的示例中,甚至没有调用相等性检查运算符。

我正在使用g ++ 5.4.0。完整的代码示例可以在这里找到: https://onlinegdb.com/ryG9W5sx4

1 个答案:

答案 0 :(得分:4)

分配器的副本必须比较相等。你没有。

(因此,即使有状态分配器也不能具有嵌入式存储。)