我需要比较10个队列的大小并确定最小的队列以插入下一个元素
创建正常的if语句将需要很多案例
所以有没有办法使用队列队列或队列数组?
注意: 我需要在2种情况下根据2个不同的东西来比较我的队列 1-基于大小(点头数) 2-基于其中点头数据的总数(我有一个单独的函数来计算)
答案 0 :(得分:1)
您应该考虑使用堆,其中密钥是每个队列的大小。
答案 1 :(得分:0)
最简单的方法是队列向量。遍历向量以找到包含最少条目的队列。
答案 2 :(得分:0)
你可以做那样的事情
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()和一个仿函数在向量中进行搜索。