比较矢量中矢量的大小以获得最大值

时间:2014-05-11 21:59:58

标签: c++

如何比较存储在矢量中的矢量大小以获得最大的矢量?

假设我有5个不同大小的整数矢量(有些可能具有相同的大小)。实际上,在我的游戏中可能会有几百个整数向量。

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

我有一个向量存储上面的5个向量

vector <vector <int> > vAllvects; 

我能够宣传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矢量的每个元素中的每个矢量大小,以获得最大尺寸的矢量?

2 个答案:

答案 0 :(得分:4)

对于这种事情,通常有标准的库算法。在这种情况下,您可以将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它是最大向量的迭代器,或者如果多于一个具有最大大小,则为第一个迭代器。

答案 1 :(得分: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];
    }
}

现在你有一个指向最大矢量的指针。