提问人:Abhijit 提问时间:7/28/2023 最后编辑:chrysanteAbhijit 更新时间:7/28/2023 访问量:68
容器元素是否可以使用“std::p mr::map”的分配器进行分配?
Can the allocator of `std::pmr::map` be used by container elements for their allocations?
问:
假设我们有一个如下内容:std::map
std::pmr::map<std::string, std::unint8_t> test;
如何通过多态分配器而不是由内存分配?std::string
std::map
std::allocator
我知道如果我们使用 ,容器元素将使用容器的分配器。但我想让它作为密钥类型使用。std::pmr::string
std::string
我阅读了有关 std::scoped_allocator_adaptor
的信息,但不确定如何使用它。
任何例子将不胜感激。
答:
2赞
chrysante
7/28/2023
#1
它不能作为密钥类型完成。 即std::string
std::string
std::basic_string<char, std::char_traits<char>, std::allocator<char>>
用于分配其内存。此分配器始终调用分配。您需要将容器元素的静态类型从其他类型更改为其他类型才能使用另一个分配器。std::allocator<char>
operator new
std::string
正如您提到的,解决方案是使用 ,它用于分配其内存。此分配器可以通过容器传播,因此元素使用与容器本身相同的分配器实例。std::pmr::string
std::pmr::polymorphic_allocator<char>
std::scoped_allocator_adaptor
在这里帮不了你。
评论