队列中向量的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>