2014-05-11 37 views
1

如何比較存儲在載體中的載體的尺寸以獲得最大尺寸的載體?比較載體中載體的大小以獲得最大尺寸

比方說,我有5個矢量各種尺寸(有些可能有相同的大小)整數。實際上,在我的遊戲中,可能會有幾百個整數向量。

vector <int> v1; 
vector <int> v2; 
vector <int> v3; 
vector <int> v4; 
vector <int> v5; 

我具有存儲上述

vector <vector <int> > vAllvects; 

我能清點5個矢量的大小,所述vAllvects向量存儲整數的5個向量的向量

for(vector < vector <int> > :: size_type iter = 0; iter < vAllvects.size() ; iter++) 
{ 
    cout << " vAllvects[" << iter << "] size is " << vAllvects[iter].size() << endl ; 

    for(vector < vector <int> > :: size_type x = 0; x < v. Allvects[iter].size() ; x++) 
    { 
    } 
    cout << endl; 
} 

我需要的是具有最大尺寸的矢量或矢量。

如何比較vAllvects向量的每個元素中的每個向量大小以獲取最大大小的向量?

回答

1

只需遍歷包含向量的向量,通過例如循環遍歷最大的向量。一個指針。例如:

unsigned int largestSize = 0; 
vector<int>* largestVect = 0; 

for(unsigned int i=0; i<vAllvects.size(); ++i) { 
    if(vAllvects[i].size() > largestSize) { 
     largestSize = vAllvects[i].size(); 
     largestVect = &vAllvects[i]; 
    } 
} 

現在你有一個指向最大的向量。

+0

謝謝,我認爲一個指針可以工作,但我並不知道如何實現它。 – user129986

+0

雖然指針確實有效,但它的關鍵在於我獲得了最大尺寸的所有矢量,而不僅僅是第一個!因爲在某些情況下可能會選擇一個矢量,在其他條件下可以選擇不同的矢量。 – user129986

3

這種東西通常有標準庫算法。在這種情況下,你可以使用std::max_element用合適的二元謂詞:

auto max_iterator = std::max_element(std::begin(vAllvects), 
            std::end(vAllvects), 
            [](const std::vector<int>& lhs, 
             const std::vector<int>& rhs) 
            { 
             return lhs.size() < rhs.size(); 
            }); 

這裏,max_iterator它的迭代最大的載體,或者如果超過一個具有最大尺寸他們的第一個。