例如,如何使用不带循环的STL算法重写下面的代码?

vector<double> pizzaBox;
int biggestSlice = 0;
for (int* p = &pizzaBox[0]; p != pizzaBox[pizzaBox.size()]; p++) {
    if(*p > biggestSlice)
        biggestSlice = *p;
}

最佳答案

假设您实际上是vector<int>的意思,并且在更正了循环结束条件之后,可以在此处使用 max_element 算法:

int biggestSlice = *max_element(pizzaBox.begin(), pizzaBox.end());

(请注意,max_element返回一个迭代器,因此在分配给biggestSlice之前,我要取消引用返回值。)

当 vector 为空时,这当然不再起作用(=产生未定义的行为)。在取消引用函数的返回值之前,需要显式测试。

10-06 08:45