How can I preallocate a std::priority_queue
with a container of type std::vector
?
std::priority_queue<unsigned char, std::vector<unsigned char>> pq;
pq.c.reserve(1024);
Does not compile because the underlying vector is a protected member.
Is it possible to use the constructor of the priority_queue
to wrap it around a pre-reserved vector?
Yes, there's a constructor for that. It's slightly tedious that you also have to specify a comparator:
std::vector<unsigned char> container;
container.reserve(1024);
std::priority_queue<unsigned char, std::vector<unsigned char>> pq (
std::less<unsigned char>(), std::move(container));
You can also use evil shenanigans to access the protected member, but I wouldn't recommend it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With