例如,如何使用不带循环的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 为空时,这当然不再起作用(=产生未定义的行为)。在取消引用函数的返回值之前,需要显式测试。