我试图将自定义分配器传递给STL的priority_queue
。我已经能够为STL的vector
和unordered_map
这样做了,但是不能对priority_queue
使用类似的语法。任何人都有我可以使用的提示或示例代码?
请注意,我需要将allocator的一个实例作为构造函数的参数之一传递。
谢谢
与std::vector
和std::unordered_map
(容器)不同,std::priority_queue
是容器适配器。它包含一个容器,并提供对它的特殊访问。查看合适的reference,您可以看到std::priority_queue
的第二个模板参数是一个容器(默认为std::vector
)。所以你只需要使用自定义分配器传递自己的容器:
std::priority_queue<T, std::vector<T, MyAllocator>> q;
std::priority_queue
是一个容器适配器。它不会自己分配任何东西,它会将它推迟到底层容器(默认情况下,它是带有默认分配器的std::vector
)。另见https://en.cppreference.com/w/cpp/container/priority_queue
换句话说:要使用自定义分配器,您必须指定一个容器(可能是std::vector
),它使用您的自定义分配器作为Container
的std::priority_queue
模板参数。然后,您可以使用任何接受分配器实例的std::priority_queue
构造函数。