我需要比較的10個隊列的大小,並確定在尺寸上至少一個插入下一個元素如何比較cpp中的隊列?
建立正常的if語句將案件很多
那麼,有沒有辦法做到這一點使用隊列隊列或隊列數組?
注: 我需要根據大小(它數點頭的)基於2個獨立的東西,比較我在隊列2分的情況下 1- 2 - 基於點頭數據的總數它(我有一個單獨的函數來計算)
我需要比較的10個隊列的大小,並確定在尺寸上至少一個插入下一個元素如何比較cpp中的隊列?
建立正常的if語句將案件很多
那麼,有沒有辦法做到這一點使用隊列隊列或隊列數組?
注: 我需要根據大小(它數點頭的)基於2個獨立的東西,比較我在隊列2分的情況下 1- 2 - 基於點頭數據的總數它(我有一個單獨的函數來計算)
你可以做這樣的事情
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的()和函子矢量搜索。
所以assumin,我的隊列是A,B,C,D,C minItt會返回自己的隊列(即.A)還是會返回它的值? – ahmed 2010-01-08 18:18:24
'minItt'是隊列向量上的迭代器。您可以將它用作指針(使用' - >'運算符)並以這種方式訪問您的隊列。 – ALOToverflow 2010-01-08 18:33:51
你應該看看使用堆,其中關鍵是每個隊列的大小。
最簡單的方法是隊列的向量。遍歷該向量以找到具有最少條目的隊列。
「大小」是指什麼?元素數量?元素中的一些特定數據? – Ioan 2010-01-08 17:32:46