2015-04-24 64 views
0

鉴于矢量的矢量,我想找到与laregest大小的矢量,并且我使用下面的代码的组中具有最大大小的矢量:找到矢量C++

bool Longest(vector<int> &A, vector<int> &B){ 
     return A.size()>B.size(); 
} 
vector<vector<int> >::iterator max_itr= max_element(L.begin(),L.end(),Longest); 

其中L是矢量(vector<vector<int> >

我一直在迭代器指向L.begin()。有什么建议么?

+1

从[此'std :: max_element'参考](http://en.cppreference.com/w/cpp/algorithm/max_element)有关比较函数:“如果第一个参数小于第二”。所以也许你应该扭转这种状况? –

回答

1

传递给std::max_element的比较仿函数对象应该返回true如果第一个操作数是小于比第二个要高。你的比较有这个错误的方法。您需要

bool Longest(const vector<int> &A, const vector<int> &B) 
{ 
    return A.size() < B.size(); 
} 

还需要注意的是更好地为参数要const引用,因为比较操作不应该修改其操作数。


这是working example

+0

这就解释了一切!谢谢! – user6396