Aşağıdaki kodu, örneğin, döngü olmadan bir STL algoritması kullanarak nasıl yeniden yazarım?Bir döngü olmadan bir STL algoritması kullanılarak yeniden yazılan işaretçiler kullanarak döngü örneği?
vector<double> pizzaBox;
int biggestSlice = 0;
for (int* p = &pizzaBox[0]; p != pizzaBox[pizzaBox.size()]; p++) {
if(*p > biggestSlice)
biggestSlice = *p;
}
Bu özel algoritma ya da genel olarak herhangi bir döngü? –
Vektörü yinelemelisiniz, altta yatan dizi değil: 'için (vektör :: iterator p = pizzaBox.begin(); p! = PizzaBox.end(); ++ p) '. Bu sadece vektör değil, her türlü konteyner (liste, harita, hash_map) için çalışacaktır. Yaptığınız şey, çalışmak için garantidir (çünkü, vektör elemanların sürekli bellekte saklanması için gereklidir), fakat resmi olarak tanımlanmamıştır. –
Not: 'pizzaBox [pizzaBox.size()]' aslında tanımlanmamış bir davranıştır. Dizinin sonunun ötesinde bir öğeye erişiyorsunuz. Eğer 'pizzaBox.at (pizzaBox.size())' kullanırsanız, bir istisna atar. –