比较一个向量中向量的大小,得到最大的

Compare sizes of vectors in a vector to get the largest

本文关键字:向量 一个 比较      更新时间:2023-10-16

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

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

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

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

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向量的每个元素中的每个向量大小以获得最大大小的向量?

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

只需遍历包含向量的向量,通过例如指针跟踪最大的向量。例如:

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];
    }
}

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