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

Qui*_*tic 0 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;
Run Code Online (Sandbox Code Playgroud)

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

PS:在解决这个问题的同时,我在TopCoder练习室里回顾了indy256的解决方案时遇到这个问题.

jro*_*rok 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;
Run Code Online (Sandbox Code Playgroud)