* max_element()如何在此代码段中运行?

时间:2013-07-21 10:48:34

标签: c++ algorithm stl

int N = 6;
vector< vector<int> > A(N, vector<int>(3));

/* Do operation with A */

cout<<(*max_element(a.begin(),a.end()))[2]<<endl;

我不确定max_element在这里做了什么。任何人都可以帮助理解这个吗?

PS:我在TopCoder练习室中查看indy256的解决方案时遇到了这个问题,同时解决了this问题。

1 个答案:

答案 0 :(得分:5)

词典比较(因为元素是向量),max_element找到向量a中的最大元素。它返回一个立即取消引用的迭代器,给出对该元素的引用。然后它调用调用operator[],返回索引2处的元素,该元素最终流式传输到cout

一个不那么简洁的等价物是:

auto it = max_element(a.begin(), a.end());
int i = (*it)[2]; // better make sure the vector has at least 3 elements!

cout << i;