¿Cómo reescribiría el código siguiente, por ejemplo, utilizando un algoritmo STL sin bucle?Ejemplo de bucle utilizando punteros reescritos utilizando un algoritmo STL, sin un bucle?
vector<double> pizzaBox;
int biggestSlice = 0;
for (int* p = &pizzaBox[0]; p != pizzaBox[pizzaBox.size()]; p++) {
if(*p > biggestSlice)
biggestSlice = *p;
}
Este algoritmo particular, o cualquier bucle en general? –
Debe recorrer el vector, y no la matriz subyacente: 'para (vector :: iterador p = pizzaBox.begin(); p = pizzaBox.end(); ++ p!)'. Eso funcionará para cualquier tipo de contenedor (list, map, hash_map), no solo vector. Lo que se hace es garantizar que funcione (porque se requiere vector para almacenar los elementos en un bloque continuo de memoria), pero formalmente indefinido. –
Nota: 'pizzaBox [pizzaBox.size()]' es en realidad un comportamiento indefinido. Estás accediendo a un elemento más allá del final de la matriz. Si usa 'pizzaBox.at (pizzaBox.size())' lanzará una excepción. –