假设我有一堆Donut对象,每个甜甜圈都有一个公共整数属性diameter.如果我有甜甜圈矢量,我怎样才能提取最小或最大直径的甜甜圈?
Jam*_*lis 16
你用std::min_element和std::max_element.例如,给出一个std::vector<int>:
std::vector<int> v;
std::vector<int>::iterator it = std::max_element(v.begin(), v.end());
// 'it' points to the largest element in 'v'
如果要使用除operator<(默认情况下使用)之外的其他内容来比较元素,则需要编写自定义比较器:
bool compare_donut_diameters(const Donut& x, const Donut& y)
{
    return x.diameter < y.diameter;
}
用作:
std::vector<Donut> v;
std::vector<Donut>::iterator it = std::max_element(v.begin, v.end(), 
                                                   compare_donut_diameters);
您还可以使用函数对象(也称为仿函数)来实现比较器,或者如果您的编译器支持lambda表达式,您可以使用lambda:
auto it = std::max_element(v.begin(), v.end(), 
    [](const Donut& x, const Donut& y) {  return x.diameter < y.diameter; });
| 归档时间: | 
 | 
| 查看次数: | 3653 次 | 
| 最近记录: |