2014-12-04 53 views
0

我正在尝试这样做,以便将一个产品插入队列的向量中,但它只是一个一个地填充,直到产品的palet已满。在队列向量中插入C++

我该如何使方法插入在存储中平衡产品,并且不要一个接一个地填充到最大容量?

队列的载体:

vector < queue <Product*> > depFresh; 

存在着我的存款类DepositFresh类之间的传承。我的DepositFresh继承了我的Deposit类中声明的所有字段。 在我的存款类我宣布:

Class Deposit { 
private: 
    int number_Palets_Storage; 
    int max_Capacity_Palet; 
    int total_Area_Deposit; 
public: 
    virtual void insertProduct(const Produto *produto) =0; 
} 

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

回答

0

你想插入产品到所有队列,直到他们都完整?听起来像

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()); 
+0

你的第二个示例使用循环的一个应该使用'i'迭代。 – user2079303 2014-12-04 16:22:31

+0

完全:)编辑:) – Hanan 2014-12-04 16:25:04

+0

我试图使方法插入平衡存储产品,并不填写一个接一个,直到最大容量,因为这已经在我的方法中完成。 – 2014-12-04 16:38:11

0

伊莫最简单的是存储在一个循环方式的新对象。要做到这一点,你可以存储一个索引,它会记住你上次存储的内容。一旦你的东西存储在队列中你就可以这样做

insertion_index = (insertion_index + 1) % v.size();

在接下来的呼叫下一个队列将存储下一个产品。

这是人们可以想到的最简单的平衡策略,但也可以使用优先级队列而不是矢量来始终使用最少的元素插入到队列中,使用队列的大小作为优先级(低=高优先级)。

0

如果我理解您的问题,您希望将产品插入向量中的最低容量队列。为什么不搜索最小尺寸并据此推送?

#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>