У меня есть часть кода, которая будет работать в цикле и создаст std::vector
на каждой итерации, поэтому я хочу использовать Boost's pool_allocator
для повышения эффективности. Тем не менее, библиотека, я использую не позволяет мне пройти аллокатор в качестве аргумента шаблона:Создайте std :: vector, пройдя boost :: pool_allocator как аргумент
std::vector<int, boost::pool_allocator<int> > v;
// This doesn't work because the library doesn't support the new type with the custom allocator
library::processVector(v);
Так я думал о переходе в распределителе в качестве аргумента, чтобы получить вокруг него:
auto pool{boost::pool_allocator<int>()};
std::vector<int> v(pool);
Но это дает мне ошибку компиляции:
error: no matching function for call to ‘std::vector<int>::vector(int, boost::pool_allocator<int>&)’
Как я могу это исправить?
Хм, это несчастливо. Так что я думаю, что нет способа обойти это, если не исправить библиотеку? – JamesNZ
Насколько я знаю, я боюсь. – jfly