2014-12-04 54 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>