這將取第二個元素的最大值,並返回給定最大第二個元素的第一個元素。如果你想要的東西不同,請更新你的問題澄清:
#include <algorithm>
#include <iostream>
#include <vector>
#include <utility>
bool choose_second(const std::pair<int, int> &lhs,
const std::pair<int, int> &rhs) {
return lhs.second < rhs.second ;
}
int main(int argc, char *argv[]) {
std::vector<std::pair<int,int> > v1 = {
std::make_pair(1, 4),
std::make_pair(2, 5),
std::make_pair(3, 6)
};
std::vector<std::pair<int,int> > v2 = {
std::make_pair(1, 4),
std::make_pair(2, 8),
std::make_pair(5, 6)
};
auto max1 = std::max_element(v1.begin(), v1.end(), choose_second);
auto max2 = std::max_element(v2.begin(), v2.end(), choose_second);
std::cout << max1->first
<< std::endl
<< max2->first
<< std::endl;
}
掃描線算法:http://en.wikipedia.org/wiki/Sweep_line_algorithm – Drakosha 2014-12-13 04:49:10
看起來你正在做的第二個元素的最大值至少從給出的兩個例子中。你是否在尋求與此不同的東西? – b4hand 2014-12-13 05:23:22