如何比较 cpp 中的队列?

发布于 2024-08-17 09:08:22 字数 194 浏览 7 评论 0原文

我需要比较 10 个队列的大小,并确定在创建普通 if 语句时插入下一个元素的最小大小,这

将需要很多情况

,所以有什么方法可以使用例如队列的队列或数组来做到这一点队列?

笔记 : 我需要根据两种情况下的 2 个不同的事物来比较我的队列 1-基于大小(其中的节点数量) 2-基于其中节点中的数据总数(我有一个单独的函数来计算)

i need to compare the size of 10 queues and determine the least one in size to insert the next element in

creating normal if statements will take A LOT of cases

so is there any way to do it using a queue of queue for example or an array of queues ?

note :
i will need to compare my queues based on 2 separate things in 2 situations
1- based on size ( number of nods in it )
2- based on the total number of the data in the nods in it ( which i have a separate function to calculate )

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

悸初 2024-08-24 09:08:23

您应该考虑使用堆,其中关键是每个队列的大小。

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

You should look into using a heap, where the key is the size of each queue.

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

痴情 2024-08-24 09:08:23

你可以做类似的事情,

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() 和函子在向量中进行搜索。

You could do something like that

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; 
} 

If it's not fast enough for you, you could always make your search in the vector with std::for_each() and a functor.

去了角落 2024-08-24 09:08:23

最简单的方法是队列向量。迭代向量以找到条目最少的队列。

The simplest approach is a vector of queues. Iterate through the vector to find the queue with the fewest entries.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文