Как я могу сравнить очереди в cpp? - PullRequest
0 голосов
/ 08 января 2010

Мне нужно сравнить размер 10 очередей и определить наименьшую по размеру, чтобы вставить следующий элемент в

создание нормального, если операторы получат много случаев

так есть ли способ сделать это, например, с помощью очереди или массива очередей?

примечание: мне нужно будет сравнить свои очереди на основе 2 отдельных вещей в 2 ситуациях 1 - в зависимости от размера (количество кивок в нем) 2 - на основе общего количества данных в узлах в нем (которые у меня есть отдельная функция для расчета)

Ответы [ 3 ]

1 голос
/ 08 января 2010

Вы должны изучить использование кучи, где ключ - размер каждой очереди.

http://en.wikipedia.org/wiki/Heap_%28data_structure%29

0 голосов
/ 08 января 2010

Вы могли бы сделать что-то подобное

std::queue<int> queue1;
std::vector<std::queue<int> > queues; // Declare a vector of queue 

queues.push_back(queue1);       // Add all of your queues to the vector 
// insert other queue here ... 

std::vector<std::queue<int> >::const_iterator minItt = queues.begin(); // Get the first queue in the vector 

// Iterate over all of the queues in the vector to fin the one with the smallest size 
for(std::vector<std::queue<int> >::const_iterator itt = ++minItt; itt != queues.end(); ++itt) 
{ 
    if(itt->size() < minItt->size()) 
        minItt = itt; 
} 

Если это не достаточно быстро для вас, вы всегда можете выполнить поиск по вектору с помощью std :: for_each () и функтора.

0 голосов
/ 08 января 2010

Самый простой подход - это вектор очередей. Выполните итерацию по вектору, чтобы найти очередь с наименьшим количеством записей.

...