for (int i = 0; /* Π½Π΅Ρ ΡΡΠ»ΠΎΠ²ΠΈΡ */ ; ++i) {
// ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° i; ΠΊΠΎΠ΄ Π² ΡΠΈΠΊΠ»Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈΡΠ΅ΡΠ°ΡΠΈΡ!
}
Π Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ for ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. Π ΡΠ°ΠΊΠΈΡ ΡΠΈΠΊΠ»Π°Ρ Π»ΠΈΠ±ΠΎ ΡΡΠ»ΠΎΠ²ΠΈΠ΅, Π»ΠΈΠ±ΠΎ ΡΠ΅Π»ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ Π½Π΅ΡΡΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠ΅Π΅ ΠΈΡΠ΅ΡΠ°ΡΠΈΡ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ΅ΠΌ ΡΠΈΠΊΠ» while, ΡΠΈΡΠ°ΡΡΠΈΠΉ Π²Π²ΠΎΠ΄ Π² Π²Π΅ΠΊΡΠΎΡ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π».
vector<int> v;
for (int i; cin >> i; /* Π½Π΅Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ */ )
v.push_back(i);
Π ΡΡΠΎΠΌ ΡΠΈΠΊΠ»Π΅ Π½Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ i. Π£ΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠΈΠΊΠ» Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΡΠΈΡΠ°Π½ Π²Π΅ΡΡ Π²Π²ΠΎΠ΄ ΠΈΠ»ΠΈ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ° Π²Π²ΠΎΠ΄Π°.
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ ΡΠ°Π·Π΄Π΅Π»Π° 5.4.2Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 5.15. ΠΠ±ΡΡΡΠ½ΠΈΡΠ΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠΈΠΊΠ»ΠΎΠ². ΠΡΠΏΡΠ°Π²ΡΡΠ΅ Π²ΡΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ.
(a) for (int ix = 0; ix != sz; ++ix) { /* ... */ }
if (ix != sz)
// ...
(b) int ix;
for (ix != sz; ++ix) { /* ... */ }
(c) for (int ix = 0; ix != sz; ++ix, ++sz) { /* ... */ }
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 5.16. Π¦ΠΈΠΊΠ» while ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Ρ ΠΎΡΠΎΡ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π½Π΅ΠΊΠΎΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΠ΅; Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ ΡΠΈΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ° ΡΠ°ΠΉΠ»Π°. Π¦ΠΈΠΊΠ» for ΡΡΠΈΡΠ°ΡΡ ΡΠΈΠΊΠ»ΠΎΠΌ ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ: ΠΈΠ½Π΄Π΅ΠΊΡ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ. ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΠΈΠ΄ΠΈΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π°, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠΈΡΠ΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»ΡΡΠ°ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΡΠΈΠΊΠ»Π°. ΠΡΠ»ΠΈ Π±Ρ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠΈΠΊΠ», ΡΠΎ ΠΊΠ°ΠΊΠΎΠΉ Π±Ρ Π²Ρ Π²ΡΠ±ΡΠ°Π»ΠΈ ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ?
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 5.17. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π΅ΡΡΡ Π΄Π²Π° Π²Π΅ΠΊΡΠΎΡΠ° ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π». ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ, Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΠΎΠ΄ΠΈΠ½ Π²Π΅ΠΊΡΠΎΡ ΠΏΡΠ΅ΡΠΈΠΊΡΠΎΠΌ Π΄ΡΡΠ³ΠΎΠ³ΠΎ. ΠΠ»Ρ Π²Π΅ΠΊΡΠΎΡΠΎΠ² Π½Π΅ΡΠ°Π²Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΠΉΡΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ΅Π½ΡΡΠ΅Π³ΠΎ Π²Π΅ΠΊΡΠΎΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π²Π΅ΠΊΡΠΎΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ 0, 1, 1, 2 ΠΈ 0, 1, 1, 2, 3, 5, 8 ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π²Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠΈΡΡ true.
5.4.3. Π‘Π΅ΡΠΈΠΉΠ½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ for
ΠΠΎΠ²ΡΠΉ ΡΡΠ°Π½Π΄Π°ΡΡ Π²Π²Π΅Π» ΡΠΏΡΠΎΡΠ΅Π½Π½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ for, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΠ΅ΡΠΈΠΉΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° for (range for) ΡΠ°ΠΊΠΎΠ²:
for (ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ : Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅)
ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ
Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π½Π΅ΠΊΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΡΠ°ΠΊΡΡ, ΠΊΠ°ΠΊ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 3.3.1), ΠΌΠ°ΡΡΠΈΠ² (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 3.5), ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΠΊΠ°ΠΊ vector ΠΈΠ»ΠΈ string, Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ»Π΅Π½Ρ begin() ΠΈ end(), Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠΈΠ΅ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΡ (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 3.4).
ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΠΈΠΏ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 4.11). ΠΡΠΎΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² Π·Π° ΡΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΡΠΈΠΏΠ° auto (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 2.5.2). Π’Π°ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΡΠ²Π΅Π΄Π΅Ρ ΡΠΈΠΏ ΡΠ°ΠΌ. ΠΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π·Π°ΠΏΠΈΡΡ Π² ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠΈΠΊΠ»Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΠΌΠ΅ΡΡ ΡΡΡΠ»ΠΎΡΠ½ΡΠΉ ΡΠΈΠΏ.
ΠΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΏΡΠ°Π²Π»ΡΡΡΠ°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, Π° Π·Π°ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ. ΠΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΡΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊΠΎΠΌ. ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Ρ.
ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΊΠΈΡ ΡΠΈΠΊΠ»ΠΎΠ² ΡΠΆΠ΅ Π±ΡΠ»ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΎ, Π½ΠΎ Π΄Π»Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½Π½ΠΎΡΡΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠΈΠΊΠ», ΡΠ΄Π²Π°ΠΈΠ²Π°ΡΡΠΈΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² Π²Π΅ΠΊΡΠΎΡΠ΅:
vector<int> v = {0,1,2,3,4,5,6,7,8,9};
// Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΡΡΠ»ΠΊΠΎΠΉ
for (auto &r : v) // Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π²Π΅ΠΊΡΠΎΡΠ° v
r *= 2; // ΡΠ΄Π²ΠΎΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π²Π΅ΠΊΡΠΎΡΠ° v
ΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ for ΠΎΠ±ΡΡΠ²Π»ΡΠ΅Ρ, ΡΡΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡΠ°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠΈΠΊΠ»Π° r ΡΠ²ΡΠ·Π°Π½Π° Ρ Π²Π΅ΠΊΡΠΎΡΠΎΠΌ v. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠ²Π΅ΡΡΠΈ ΡΠΈΠΏ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ r, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ auto. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π²Π΅ΠΊΡΠΎΡΠ° v, ΠΎΠ±ΡΡΠ²ΠΈΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ r ΠΊΠ°ΠΊ ΡΡΡΠ»ΠΊΡ. ΠΡΠΈ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠΈ Π΅ΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² ΡΠΈΠΊΠ»Π΅ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, Ρ ΠΊΠΎΡΠΎΡΡΠΌ ΡΠ²ΡΠ·Π°Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ r Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ.
ΠΠΎΡ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΠΈΠΉΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° for Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Ρ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° for:
for (auto beg = v.begin(), end = v.end(); beg != end; ++beg) {
auto &r = *beg; // Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² r Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΡΡΠ»ΠΊΠΎΠΉ
r *= 2; // ΡΠ΄Π²ΠΎΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π²Π΅ΠΊΡΠΎΡΠ° v
}
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ΅ΡΠΈΠΉΠ½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ for, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ 3.3.2 ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡ ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΊ Π²Π΅ΠΊΡΠΎΡΡ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠΌΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ. Π ΡΠ΅ΡΠΈΠΉΠ½ΠΎΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅ for ΠΊΠ΅ΡΠΈΡΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ end(). ΠΡΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»ΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ end() ΡΡΠ°Π½Π΅Ρ Π½Π΅Π²Π΅ΡΠ½ΡΠΌ (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 3.4.1). ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎ ΡΡΠΎΠΉ ΡΠ΅ΠΌΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° Π² ΡΠ°Π·Π΄Π΅Π»Π΅ 9.3.6.
5.4.4. ΠΠΏΠ΅ΡΠ°ΡΠΎΡ do while
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ do while ΠΏΠΎΡ ΠΎΠΆ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ while, Π½ΠΎ Π΅Π³ΠΎ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ΅Π»Π°. ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΡ ΡΠ΅Π»ΠΎ ΡΠΈΠΊΠ»Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ. ΠΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠΎΡΠΌΠ° ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° Π½ΠΈΠΆΠ΅.
do
ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ
while (ΡΡΠ»ΠΎΠ²ΠΈΠ΅);
ΠΠΎΡΠ»Π΅ Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π² ΡΠΊΠΎΠ±ΠΊΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ do while Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎΡΠΊΠΎΠΉ Ρ Π·Π°ΠΏΡΡΠΎΠΉ.
Π ΡΠΈΠΊΠ»Π΅ do while ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΠ΅ΠΆΠ΄Π΅, ΡΠ΅ΠΌ ΡΡΠ»ΠΎΠ²ΠΈΠ΅. ΠΡΠΈΡΠ΅ΠΌ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΡΡΡΠΌ. ΠΡΠ»ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π»ΠΎΠΆΠ½ΠΎ, ΡΠΈΠΊΠ» Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ, Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠΈΠΊΠ» ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΡΡΡ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π² ΡΡΠ»ΠΎΠ²ΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π²Π½Π΅ ΡΠ΅Π»Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° do while.
ΠΠ°ΠΏΠΈΡΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΈΠΊΠ» do while Π΄Π»Ρ ΡΡΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠΈΡΠ΅Π».
// ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠ°ΡΡ ΡΠΈΡΠ΅Π» Π΄Π»Ρ ΡΡΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ
string rsp; // ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ
// ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° Π² ΡΠΈΠΊΠ»Π΅ do
do {
cout << "please enter two values: ";
int val1 = 0, val2 = 0;
cin >> val1 >> val2;
cout << "The sum of " << val1 << " and " << val2
<< " = " << val1 + val2 << "\n\n"
<< "More? Enter yes or no: ";
cin >> rsp;
} while (!rsp.empty() && rsp[0] != 'n');
Π¦ΠΈΠΊΠ» Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠΌ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄Π²ΡΡ ΡΠΈΡΠ΅Π». ΠΠ°ΡΠ΅ΠΌ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΈΡ ΡΡΠΌΠΌΠ° ΠΈ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡ, ΠΆΠ΅Π»Π°Π΅Ρ Π»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΡΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π»Π΅Π΅. ΠΡΠ²Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ Π² ΡΡΠ»ΠΎΠ²ΠΈΠΈ. ΠΡΠ»ΠΈ Π²Π²ΠΎΠ΄ ΠΏΡΡΡ ΠΈΠ»ΠΈ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ n, ΡΠΈΠΊΠ» Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠΈΠΊΠ» ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΡΡΡ.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π½Π΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ Π΄ΠΎ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊΠ°, ΡΠΈΠΊΠ» do while Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π² ΡΡΠ»ΠΎΠ²ΠΈΠΈ.
do {
// ...
mumble(fΠΎΠΎ) ;
} while (int foo = get_foo()); // ΠΎΡΠΈΠ±ΠΊΠ°: ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π² ΡΡΠ»ΠΎΠ²ΠΈΠΈ do
ΠΡΠ»ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π² ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΠΎ Π»ΡΠ±ΠΎΠ΅ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ ΠΏΡΠ΅ΠΆΠ΄Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ!
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ ΡΠ°Π·Π΄Π΅Π»Π° 5.4.4Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 5.18. ΠΠ±ΡΡΡΠ½ΠΈΡΠ΅ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠΈΠΊΠ»ΠΎΠ². ΠΡΠΏΡΠ°Π²ΡΡΠ΅ Π²ΡΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½Π½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ.
(a) do
int v1, v2;
cout << "Please enter two numbers to sum:";
if (cin >> v1 >> v2)
cout << "Sum is: " << v1 + v2 << endl;
while (cin);
(b) do {
// ...
} while (int ival = get_response());
(c) do {
int ival = get_response();
} while (ival);
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 5.19. ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΈΠΊΠ» do while Π΄Π»Ρ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ° Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄Π²ΡΡ ΡΡΡΠΎΠΊ ΠΈ ΡΠΊΠ°Π·Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠ· Π½ΠΈΡ ΠΌΠ΅Π½ΡΡΠ΅ Π΄ΡΡΠ³ΠΎΠΉ.
5.5. ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π°
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° ΠΏΡΠ΅ΡΡΠ²Π°ΡΡ ΠΏΠΎΡΠΎΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. Π―Π·ΡΠΊ Π‘++ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΅ΡΡΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π°: break, continue ΠΈ goto, ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΡΠ΅ Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅, ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ return, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΎΠΏΠΈΡΠ°Π½ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ 6.3.
5.5.1. ΠΠΏΠ΅ΡΠ°ΡΠΎΡ break
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ break Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠΉ ΠΎΠΊΡΡΠΆΠ°ΡΡΠΈΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ while, do while, for ΠΈΠ»ΠΈ switch. ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΡΡΡ Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°, ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π·Π° Π·Π°Π²Π΅ΡΡΠ°Π΅ΠΌΡΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ.
ΠΠΏΠ΅ΡΠ°ΡΠΎΡ break ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΈΠΊΠ»Π΅ ΠΈΠ»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅ switch (Π²ΠΊΠ»ΡΡΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΈΠ»ΠΈ Π±Π»ΠΎΠΊΠΈ, Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ Π² ΡΡΠΈ ΡΠΈΠΊΠ»Ρ). ΠΠΏΠ΅ΡΠ°ΡΠΎΡ break Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Π»ΠΈΡΡ Π½Π° Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠΉ ΠΎΠΊΡΡΠΆΠ°ΡΡΠΈΠΉ ΡΠΈΠΊΠ» ΠΈΠ»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ switch.
string buf;
while (cin >> buf && !buf.empty()) {