Ber*_*nie 5 c++ algorithm loops for-loop stl
我如何重写下面的代码,例如,使用没有循环的STL算法?
vector<double> pizzaBox;
int biggestSlice = 0;
for (int* p = &pizzaBox[0]; p != pizzaBox[pizzaBox.size()]; p++) {
if(*p > biggestSlice)
biggestSlice = *p;
}
Run Code Online (Sandbox Code Playgroud)
Kon*_*lph 14
假设你真正意味着vector<int>
,在纠正你的循环结束条件后,你可以在max_element
这里使用算法:
int biggestSlice = *max_element(pizzaBox.begin(), pizzaBox.end());
Run Code Online (Sandbox Code Playgroud)
(注意,max_element
返回一个迭代器,因此我在分配之前取消引用返回值biggestSlice
.)
当向量为空时,这当然不再有效(=产生未定义的行为).在取消引用函数的返回值之前,需要显式测试.