队列中向量的C++插入
我试着在队列向量中插入一个产品,但它只是一个接一个地填充,直到产品的调色板满为止 如何使插入方法平衡存储中的产品,并在达到最大容量之前不逐个填充 队列向量:队列中向量的C++插入,c++,vector,insert,queue,C++,Vector,Insert,Queue,我试着在队列向量中插入一个产品,但它只是一个接一个地填充,直到产品的调色板满为止 如何使插入方法平衡存储中的产品,并在达到最大容量之前不逐个填充 队列向量: vector < queue <Product*> > depFresh; My class DepositFresh包含以下方法: 方法插入: void DepositFresh::insertProduct(const Product *product) { if (depFresh.size(
vector < queue <Product*> > depFresh;
My class DepositFresh包含以下方法:
方法插入:
void DepositFresh::insertProduct(const Product *product) {
if (depFresh.size() == getNumber_Palets_Storage())
for (int i = 0; i < depFresh.size(); i++) {
if (depFresh.at(i).size() < getMax_Capacity__Palet())
depFresh.at(i).push(product->clone());
break;
}
}
您是否正在尝试将产品插入所有队列,直到它们都已满?听起来像
int i = 0;
while(true)
{
if (depFresh.at(i).size() < getMax_Capacity__Palet())
depFresh.at(i).push(product->clone());
else
break;
i = (i + 1) / depFresh.size();
}
但为什么不呢
for(int i = 0; i < depFresh.size(); ++i)
for (int j = 0; j < getMax_Capacity__Palet() ; ++j)
depFresh.at(i).push(product->clone());
Imo最简单的方法是以循环方式存储新对象。要做到这一点,您可以存储一个索引,它可以记住您上次存储内容的位置。在队列中存储某个内容后,您可以执行以下操作 插入索引=插入索引+1%v.size 在下一次呼叫中,下一个队列将存储下一个产品
这是人们能想到的最简单的平衡策略,但也有可能使用优先级队列而不是向量来始终插入元素最少的队列,使用队列大小作为优先级低=高优先级。如果我理解您的问题,您希望将产品插入向量中容量最低的队列。为什么不搜索最小的尺寸并相应地推送
#include <vector>
#include <queue>
#include <iostream>
#include <string>
#include <algorithm>
class myContainer
{
private:
std::vector< std::queue< long > > depFresh;
public:
myContainer( size_t queue_cnt ) : depFresh( queue_cnt )
{
}
void insertProduct( long product )
{
auto iter = std::min_element( depFresh.begin(), depFresh.end(), []( std::queue< long > & l, std::queue< long > & r ){ return l.size() < r.size(); } );
iter->push( product );
}
void dump()
{
size_t index = 0;
std::cout << "---------------------------" << std::endl;
for( const auto & o : depFresh )
{
std::cout << ++index << " has size " << o.size() << '\n';
}
std::cout << "---------------------------" << std::endl;
}
};
int main()
{
myContainer container( 5 );
for( long x = 0; x < 40; ++x )
{
container.insertProduct( x );
container.dump();
}
}
这将产生:
---------------------------
1 has size 1
2 has size 0
3 has size 0
4 has size 0
5 has size 0
---------------------------
---------------------------
1 has size 1
2 has size 1
3 has size 0
4 has size 0
5 has size 0
---------------------------
---------------------------
1 has size 1
2 has size 1
3 has size 1
4 has size 0
5 has size 0
---------------------------
---------------------------
1 has size 1
2 has size 1
3 has size 1
4 has size 1
5 has size 0
---------------------------
---------------------------
1 has size 1
2 has size 1
3 has size 1
4 has size 1
5 has size 1
---------------------------
---------------------------
1 has size 2
2 has size 1
3 has size 1
4 has size 1
5 has size 1
---------------------------
---------------------------
1 has size 2
2 has size 2
3 has size 1
4 has size 1
5 has size 1
---------------------------
---------------------------
1 has size 2
2 has size 2
3 has size 2
4 has size 1
5 has size 1
---------------------------
---------------------------
1 has size 2
2 has size 2
3 has size 2
4 has size 2
5 has size 1
---------------------------
---------------------------
1 has size 2
2 has size 2
3 has size 2
4 has size 2
5 has size 2
---------------------------
---------------------------
1 has size 3
2 has size 2
3 has size 2
4 has size 2
5 has size 2
---------------------------
---------------------------
1 has size 3
2 has size 3
3 has size 2
4 has size 2
5 has size 2
---------------------------
---------------------------
1 has size 3
2 has size 3
3 has size 3
4 has size 2
5 has size 2
---------------------------
---------------------------
1 has size 3
2 has size 3
3 has size 3
4 has size 3
5 has size 2
---------------------------
---------------------------
1 has size 3
2 has size 3
3 has size 3
4 has size 3
5 has size 3
---------------------------
---------------------------
1 has size 4
2 has size 3
3 has size 3
4 has size 3
5 has size 3
---------------------------
---------------------------
1 has size 4
2 has size 4
3 has size 3
4 has size 3
5 has size 3
---------------------------
---------------------------
1 has size 4
2 has size 4
3 has size 4
4 has size 3
5 has size 3
---------------------------
---------------------------
1 has size 4
2 has size 4
3 has size 4
4 has size 4
5 has size 3
---------------------------
---------------------------
1 has size 4
2 has size 4
3 has size 4
4 has size 4
5 has size 4
---------------------------
---------------------------
1 has size 5
2 has size 4
3 has size 4
4 has size 4
5 has size 4
---------------------------
---------------------------
1 has size 5
2 has size 5
3 has size 4
4 has size 4
5 has size 4
---------------------------
---------------------------
1 has size 5
2 has size 5
3 has size 5
4 has size 4
5 has size 4
---------------------------
---------------------------
1 has size 5
2 has size 5
3 has size 5
4 has size 5
5 has size 4
---------------------------
---------------------------
1 has size 5
2 has size 5
3 has size 5
4 has size 5
5 has size 5
---------------------------
---------------------------
1 has size 6
2 has size 5
3 has size 5
4 has size 5
5 has size 5
---------------------------
---------------------------
1 has size 6
2 has size 6
3 has size 5
4 has size 5
5 has size 5
---------------------------
---------------------------
1 has size 6
2 has size 6
3 has size 6
4 has size 5
5 has size 5
---------------------------
---------------------------
1 has size 6
2 has size 6
3 has size 6
4 has size 6
5 has size 5
---------------------------
---------------------------
1 has size 6
2 has size 6
3 has size 6
4 has size 6
5 has size 6
---------------------------
---------------------------
1 has size 7
2 has size 6
3 has size 6
4 has size 6
5 has size 6
---------------------------
---------------------------
1 has size 7
2 has size 7
3 has size 6
4 has size 6
5 has size 6
---------------------------
---------------------------
1 has size 7
2 has size 7
3 has size 7
4 has size 6
5 has size 6
---------------------------
---------------------------
1 has size 7
2 has size 7
3 has size 7
4 has size 7
5 has size 6
---------------------------
---------------------------
1 has size 7
2 has size 7
3 has size 7
4 has size 7
5 has size 7
---------------------------
---------------------------
1 has size 8
2 has size 7
3 has size 7
4 has size 7
5 has size 7
---------------------------
---------------------------
1 has size 8
2 has size 8
3 has size 7
4 has size 7
5 has size 7
---------------------------
---------------------------
1 has size 8
2 has size 8
3 has size 8
4 has size 7
5 has size 7
---------------------------
---------------------------
1 has size 8
2 has size 8
3 has size 8
4 has size 8
5 has size 7
---------------------------
---------------------------
1 has size 8
2 has size 8
3 has size 8
4 has size 8
5 has size 8
---------------------------
</pre>
您的第二个示例可能在其中一个循环中使用i进行迭代。我正在尝试使方法插入平衡存储中的产品,并且在达到最大容量之前不要逐个填充,因为我的方法中已经完成了这项操作。@Sérgiogmes请解释为什么我的第一个代码示例不这样做?
---------------------------
1 has size 1
2 has size 0
3 has size 0
4 has size 0
5 has size 0
---------------------------
---------------------------
1 has size 1
2 has size 1
3 has size 0
4 has size 0
5 has size 0
---------------------------
---------------------------
1 has size 1
2 has size 1
3 has size 1
4 has size 0
5 has size 0
---------------------------
---------------------------
1 has size 1
2 has size 1
3 has size 1
4 has size 1
5 has size 0
---------------------------
---------------------------
1 has size 1
2 has size 1
3 has size 1
4 has size 1
5 has size 1
---------------------------
---------------------------
1 has size 2
2 has size 1
3 has size 1
4 has size 1
5 has size 1
---------------------------
---------------------------
1 has size 2
2 has size 2
3 has size 1
4 has size 1
5 has size 1
---------------------------
---------------------------
1 has size 2
2 has size 2
3 has size 2
4 has size 1
5 has size 1
---------------------------
---------------------------
1 has size 2
2 has size 2
3 has size 2
4 has size 2
5 has size 1
---------------------------
---------------------------
1 has size 2
2 has size 2
3 has size 2
4 has size 2
5 has size 2
---------------------------
---------------------------
1 has size 3
2 has size 2
3 has size 2
4 has size 2
5 has size 2
---------------------------
---------------------------
1 has size 3
2 has size 3
3 has size 2
4 has size 2
5 has size 2
---------------------------
---------------------------
1 has size 3
2 has size 3
3 has size 3
4 has size 2
5 has size 2
---------------------------
---------------------------
1 has size 3
2 has size 3
3 has size 3
4 has size 3
5 has size 2
---------------------------
---------------------------
1 has size 3
2 has size 3
3 has size 3
4 has size 3
5 has size 3
---------------------------
---------------------------
1 has size 4
2 has size 3
3 has size 3
4 has size 3
5 has size 3
---------------------------
---------------------------
1 has size 4
2 has size 4
3 has size 3
4 has size 3
5 has size 3
---------------------------
---------------------------
1 has size 4
2 has size 4
3 has size 4
4 has size 3
5 has size 3
---------------------------
---------------------------
1 has size 4
2 has size 4
3 has size 4
4 has size 4
5 has size 3
---------------------------
---------------------------
1 has size 4
2 has size 4
3 has size 4
4 has size 4
5 has size 4
---------------------------
---------------------------
1 has size 5
2 has size 4
3 has size 4
4 has size 4
5 has size 4
---------------------------
---------------------------
1 has size 5
2 has size 5
3 has size 4
4 has size 4
5 has size 4
---------------------------
---------------------------
1 has size 5
2 has size 5
3 has size 5
4 has size 4
5 has size 4
---------------------------
---------------------------
1 has size 5
2 has size 5
3 has size 5
4 has size 5
5 has size 4
---------------------------
---------------------------
1 has size 5
2 has size 5
3 has size 5
4 has size 5
5 has size 5
---------------------------
---------------------------
1 has size 6
2 has size 5
3 has size 5
4 has size 5
5 has size 5
---------------------------
---------------------------
1 has size 6
2 has size 6
3 has size 5
4 has size 5
5 has size 5
---------------------------
---------------------------
1 has size 6
2 has size 6
3 has size 6
4 has size 5
5 has size 5
---------------------------
---------------------------
1 has size 6
2 has size 6
3 has size 6
4 has size 6
5 has size 5
---------------------------
---------------------------
1 has size 6
2 has size 6
3 has size 6
4 has size 6
5 has size 6
---------------------------
---------------------------
1 has size 7
2 has size 6
3 has size 6
4 has size 6
5 has size 6
---------------------------
---------------------------
1 has size 7
2 has size 7
3 has size 6
4 has size 6
5 has size 6
---------------------------
---------------------------
1 has size 7
2 has size 7
3 has size 7
4 has size 6
5 has size 6
---------------------------
---------------------------
1 has size 7
2 has size 7
3 has size 7
4 has size 7
5 has size 6
---------------------------
---------------------------
1 has size 7
2 has size 7
3 has size 7
4 has size 7
5 has size 7
---------------------------
---------------------------
1 has size 8
2 has size 7
3 has size 7
4 has size 7
5 has size 7
---------------------------
---------------------------
1 has size 8
2 has size 8
3 has size 7
4 has size 7
5 has size 7
---------------------------
---------------------------
1 has size 8
2 has size 8
3 has size 8
4 has size 7
5 has size 7
---------------------------
---------------------------
1 has size 8
2 has size 8
3 has size 8
4 has size 8
5 has size 7
---------------------------
---------------------------
1 has size 8
2 has size 8
3 has size 8
4 has size 8
5 has size 8
---------------------------
</pre>