如何比较存储在矢量中的矢量大小以获得最大的矢量?
假设我有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矢量的每个元素中的每个矢量大小,以获得最大尺寸的矢量?
答案 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];
}
}
现在你有一个指向最大矢量的指针。