Я пытаюсь найти первые n элементов списка, который заполняется динамически.Я думал, что приоритетная очередь будет хорошим способом для этого.Поскольку мне нужна только верхняя часть n, нет смысла хранить что-либо большее, чем элементы 'n', необходимые для моих вычислений.Я не могу найти в библиотеке повышения что-либо, что может установить ограничение для очереди приоритетов
Я попытался использовать функцию резерва (element_count).В документе сказано, что функция используется для «резервирования места для элементов element_count».Но это не сработало так, как я думал, это будет
Это пример кода, который я пишу.Это НЕ ИСПОЛЬЗОВАНИЕ СЛУЧАЯ.
int main()
{
int maxSize = 2; // Priority Queue (pq) is expected to hold a maximum of 2 elements at any time
boost::heap::priority_queue<int> pq; // Declaration
pq.reserve(maxSize); // I assumed this would reserve space only for 2 elements and anything more would over write the existing ones based on comparison
pq.push(3);
pq.push(2);
pq.push(1); // Push should fail
cout << "Size = " <<pq.size() << " Max Size = " << (int)pq.max_size();
for (int i=0; i<maxSize; i++)
{
int a = pq.top();
pq.pop();
cout << a <<"\n";
}
return 0;
}
Я ожидал, что результатом будет:
Размер = 2 Максимальный размер = 2
3
2
Но чтоЯ получаю это:
Размер = 3 Максимальный размер = -1
3
2
Чего мне не хватает?