const int *cp = &i; // ok: Π½ΠΎ cp Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ i (ΡΠ°Π·Π΄Π΅Π» 2.4.2)
const int &r = i; // ok: Π½ΠΎ r Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ i (ΡΠ°Π·Π΄Π΅Π» 2.4.1)
const int &r2 = 42; // ok: (ΡΠ°Π·Π΄Π΅Π» 2.4.1)
int *p = cp; // ΠΎΡΠΈΠ±ΠΊΠ°: ΡΠΈΠΏΡ p ΠΈ cp Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ (ΡΠ°Π·Π΄Π΅Π» 2.4.2)
int &r3 = r; // ΠΎΡΠΈΠ±ΠΊΠ°: ΡΠΈΠΏΡ r3 ΠΈ r Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ (ΡΠ°Π·Π΄Π΅Π» 2.4.1)
int &r4 = 42; // ΠΎΡΠΈΠ±ΠΊΠ°: Π½Π΅Π»ΡΠ·Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΡΡΡ ΡΡΡΠ»ΠΊΡ ΠΈΠ·
// Π»ΠΈΡΠ΅ΡΠ°Π»Π° (ΡΠ°Π·Π΄Π΅Π» 2.3.1)
Π’Π΅ ΠΆΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΈ ΠΊ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²:
int i = 0;
const int ci = i;
string::size_type ctr = 0;
reset(&i); // Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π²Π΅ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ reset Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ ΡΠΈΠΏΠ° int*
reset(&ci); // ΠΎΡΠΈΠ±ΠΊΠ°: Π½Π΅Π»ΡΠ·Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ int* ΠΈΠ· ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π°
// ΠΎΠ±ΡΠ΅ΠΊΡ const int
reset(i); // Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π²Π΅ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ reset Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ ΡΠΈΠΏΠ° int&
reset(ci); // ΠΎΡΠΈΠ±ΠΊΠ°: Π½Π΅Π»ΡΠ·Ρ ΠΏΡΠΈΠ²ΡΠ·Π°ΡΡ ΠΏΡΠΎΡΡΡΡ ΡΡΡΠ»ΠΊΡ ΠΊ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΠΌΡ
// ΠΎΠ±ΡΠ΅ΠΊΡΡ ci
reset(42); // ΠΎΡΠΈΠ±ΠΊΠ°: Π½Π΅Π»ΡΠ·Ρ ΠΏΡΠΈΠ²ΡΠ·Π°ΡΡ ΠΏΡΠΎΡΡΡΡ ΡΡΡΠ»ΠΊΡ ΠΊ Π»ΠΈΡΠ΅ΡΠ°Π»Ρ
reset(ctr); // ΠΎΡΠΈΠ±ΠΊΠ°: ΡΠΈΠΏΡ Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ; ctr ΠΈΠΌΠ΅Π΅Ρ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠΉ ΡΠΈΠΏ
// ok: ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ find_char ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠ»ΠΊΠΎΠΉ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ
find_char("Hello World!", 'o', ctr);
Π‘ΡΡΠ»ΠΎΡΠ½ΡΡ Π²Π΅ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ reset() (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 6.2.2) ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΠΈΠΏΠ° int. ΠΠ΅Π»ΡΠ·Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π»ΠΈΡΠ΅ΡΠ°Π», Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠΈΠΏ int, ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ, ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° const int. Π’ΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅ Π²Π΅ΡΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ reset() Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° int* (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 6.2.1). Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΡΡΠΎΠΊΠΎΠ²ΡΠΉ Π»ΠΈΡΠ΅ΡΠ°Π» ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ²ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΡΠ½ΠΊΡΠΈΠΈ find_char() (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 6.2.2). Π‘ΡΡΠ»ΠΎΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ β ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΠΈΠ· Π»ΠΈΡΠ΅ΡΠ°Π»ΠΎΠ².
ΠΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡΠΠ΅ΡΡΠΌΠ° ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π° ΠΎΡΠΈΠ±ΠΊΠ°, ΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΊΠ°ΠΊ ΠΏΡΠΎΡΡΡΠ΅ ΡΡΡΠ»ΠΊΠΈ. ΠΡΠΎ ΡΠΎΠ·Π΄Π°Π΅Ρ Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅ΠΉ ΡΡΠΎΡΠΎΠ½Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π»ΠΎΠΆΠ½ΠΎΠ΅ Π²ΠΏΠ΅ΡΠ°ΡΠ»Π΅Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠΎΠ³Π»Π° Π±Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠ΅Π³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Π½Π΅ΠΎΠΏΡΠ°Π²Π΄Π°Π½Π½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅Ρ ΡΠΈΠΏΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ. ΠΠ°ΠΊ ΡΠΆΠ΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡ, Π½Π΅Π»ΡΠ·Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, Π»ΠΈΡΠ΅ΡΠ°Π» ΠΈΠ»ΠΈ ΡΡΠ΅Π±ΡΡΡΠΈΠΉ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠ°ΠΊ ΠΏΡΠΎΡΡΠΎΠΉ ΡΡΡΠ»ΠΎΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ find_char() ΠΈΠ· ΡΠ°Π·Π΄Π΅Π»Π° 6.2.2. Π‘ΡΡΠΎΠΊΠΎΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠ΄Π΅Π»Π°Π½ ΡΡΡΠ»ΠΊΠΎΠΉ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ. ΠΡΠ»ΠΈ Π±Ρ ΡΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π±ΡΠ» ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΊΠ°ΠΊ string&:
// ΠΎΡΠΈΠ±ΠΊΠ°: ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ const string&
string::size_type find_char(string &s, char c,
string::size_type &occurs);
ΡΠΎ Π²ΡΠ·Π²Π°ΡΡ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠ»Π°ΡΡΠ° string, ΡΠ°ΠΊ ΡΡΠΎ
find_char("Hello World", 'o', ctr);
ΠΏΡΠΈΠ²Π΅Π»ΠΎ Π±Ρ ΠΊ Π½Π΅ΡΠ΄Π°ΡΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΡΡΡ Π²Π΅ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ find_char() Π½Π΅Π»ΡΠ·Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠ²ΠΎΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ find_char() Π² ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΡΡΡΠΎΠΊΠ° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ:
bool is_sentence(const string &s) {
// Π΅ΡΠ»ΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ s Π΅ΡΡΡ ΡΠΎΡΠΊΠ°, ΡΠΎ ΡΡΡΠΎΠΊΠ° s - ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅
string::size_type ctr = 0;
return find_char(s, ctr) == s.size() - 1 && ctr == 1;
}
ΠΡΠ»ΠΈ Π±Ρ ΡΡΠ½ΠΊΡΠΈΡ find_char() ΠΏΠΎΠ»ΡΡΠ°Π»Π° ΠΏΡΠΎΡΡΡΡ ΡΡΡΠ»ΠΊΡ string?, ΡΠΎ ΡΡΠΎΡ Π΅Π΅ Π²ΡΠ·ΠΎΠ² ΠΏΡΠΈΠ²Π΅Π» Π±Ρ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ s β ΡΡΡΠ»ΠΊΠ° Π½Π° const string, Π½ΠΎ ΡΡΠ½ΠΊΡΠΈΡ find_char() Π±ΡΠ»Π° Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΡΠ°ΡΡΠ°Ρ ΠΏΡΠΎΡΡΡΡ ΡΡΡΠ»ΠΊΡ.
ΠΡΠ»ΠΎ Π±Ρ Π·Π°ΠΌΠ°Π½ΡΠΈΠ²ΠΎ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² ΡΠΈΠΏ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π² ΡΡΠ½ΠΊΡΠΈΠΈ is_sentence(). ΠΠΎ ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΊΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π²ΡΠ·ΡΠ²Π°ΡΡΠ°Ρ ΡΡΠΎΡΠΎΠ½Π° ΡΡΠ½ΠΊΡΠΈΠΈ is_sentence() ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ.
ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ β ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ find_char(). ΠΡΠ»ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΡ find_char(), ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΊΠΎΠΏΠΈΡ ΡΡΡΠΎΠΊΠΈ s Π² ΡΡΠ½ΠΊΡΠΈΠΈ is_sentence() ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΡΡ ΡΡΡΠΎΠΊΡ ΡΡΠ½ΠΊΡΠΈΠΈ find_char().
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ ΡΠ°Π·Π΄Π΅Π»Π° 6.2.3Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 6.16. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ ΡΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠ°, ΠΎΠ½Π° ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΠ»Π΅Π·Π½Π°, ΡΠ΅ΠΌ ΠΌΠΎΠ³Π»Π° Π±Ρ Π±ΡΡΡ. ΠΡΡΠ²ΠΈΡΠ΅ ΠΈ ΠΈΡΠΏΡΠ°Π²ΡΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ:
bool is_empty(string& s) { return s.empty(); }
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 6.17. ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π»ΠΈ ΡΡΡΠΎΠΊΠ° ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΠ±ΡΠ΄Ρ Π·Π°Π³Π»Π°Π²Π½ΡΠ΅ Π±ΡΠΊΠ²Ρ. ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΡΡΡ Π²ΡΡ ΡΡΡΠΎΠΊΡ Π² Π½ΠΈΠΆΠ½ΠΈΠΉ ΡΠ΅Π³ΠΈΡΡΡ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ Π² ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠΎΡ ΠΆΠ΅ ΡΠΈΠΏ? ΠΡΠ»ΠΈ Π΄Π°, ΡΠΎ ΠΏΠΎΡΠ΅ΠΌΡ? ΠΡΠ»ΠΈ Π½Π΅Ρ, ΡΠΎ ΡΠΎΠΆΠ΅ ΠΏΠΎΡΠ΅ΠΌΡ?
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 6.18. ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ°ΠΏΠΈΡΠ°Π² ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΈΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ.
(a) Π€ΡΠ½ΠΊΡΠΈΡ compare() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° bool ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°, ΡΠ²Π»ΡΡΡΠΈΠ΅ΡΡ ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ Π½Π° ΠΊΠ»Π°ΡΡ matrix.
(b) Π€ΡΠ½ΠΊΡΠΈΡ change_val() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΡΠ΅ΡΠ°ΡΠΎΡ vector<int> ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°: ΠΎΠ΄ΠΈΠ½ ΡΠΈΠΏΠ° int, Π° Π²ΡΠΎΡΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΎΡ Π΄Π»Ρ Π²Π΅ΠΊΡΠΎΡΠ° vector<int>.
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 6.19. Π‘ ΡΡΠ΅ΡΠΎΠΌ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅, ΠΊΠ°ΠΊΠΈΠ΅ Π²ΡΠ·ΠΎΠ²Ρ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡ, Π° ΠΊΠ°ΠΊΠΈΠ΅ Π½Π΅Ρ. ΠΠ±ΡΡΡΠ½ΠΈΡΠ΅, ΠΏΠΎΡΠ΅ΠΌΡ ΠΎΠ½ΠΈ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡ.
double calc(double);
int count(const string &, char);
int sum(vector<int>::iterator, vector<int>::iterator, int);
vector<int> vec(10);
(a) calc(23.4, 55.1); (b) count("abcda", 'a');
(c) calc(66); (d) sum(vec.begin(), vec.end(), 3.8);
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 6.20. ΠΠΎΠ³Π΄Π° ΡΡΡΠ»ΠΎΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΡΡΠ»ΠΊΠ°ΠΌΠΈ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ? Π§ΡΠΎ Π±ΡΠ΄Π΅Ρ, Π΅ΡΠ»ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΏΡΠΎΡΡΠΎΠΉ ΡΡΡΠ»ΠΊΠΎΠΉ, ΠΊΠΎΠ³Π΄Π° ΡΡΠΎ ΠΌΠΎΠ³Π»Π° Π±ΡΡΡ ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ?
6.2.4. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π² Π²ΠΈΠ΄Π΅ ΠΌΠ°ΡΡΠΈΠ²Π°
ΠΠ°ΡΡΠΈΠ²Ρ ΠΎΠ±Π»Π°Π΄Π°ΡΡ Π΄Π²ΡΠΌΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΠΌΠΈ, Π²Π»ΠΈΡΡΡΠΈΠΌΠΈ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ Ρ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ: ΠΌΠ°ΡΡΠΈΠ² Π½Π΅Π»ΡΠ·Ρ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 3.5.1), ΠΈΠΌΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π² ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π΅Π³ΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 3.5.3). ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ² Π½Π΅Π»ΡΠ·Ρ, Π΅Π³ΠΎ Π½Π΅Π»ΡΠ·Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΠΌΡ ΠΌΠ°ΡΡΠΈΠ²Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π² ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π΅Π³ΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ.
Π₯ΠΎΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΏΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π΅Π»ΡΠ·Ρ, Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΊΠ°ΠΊ ΠΌΠ°ΡΡΠΈΠ²:
// Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° Π²Π½Π΅ΡΠ½ΠΈΠΉ Π²ΠΈΠ΄,
// ΡΡΠΈ ΡΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ print ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Ρ
// Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΈΠΏΠ° const int*
void print(const int*);
void print(const int[]); // Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΌΠ°ΡΡΠΈΠ²
void print(const int[10]); // ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
ΠΠ΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ Π²ΠΈΠ΄Π°, ΡΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Ρ: Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Π° ΡΡΠ½ΠΊΡΠΈΡ Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ ΡΠΈΠΏΠ° const int*. ΠΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ print(), ΠΎΠ½ Π²ΡΡΡΠ½ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎ, ΡΡΠΎ ΡΠΈΠΏΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ const int*:
int i = 0, j[2] = {0, 1};
print(&i); // ok: &i - int*
print(j); // ok: j ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π² int*, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ Π½Π° j[0]
ΠΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ² ΡΡΠ½ΠΊΡΠΈΠΈ print(), ΡΠΎ ΡΡΠΎΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π² ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅; ΡΠ°Π·ΠΌΠ΅Ρ ΠΌΠ°ΡΡΠΈΠ²Π° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
ΠΠΎΠ΄ΠΎΠ±Π½ΠΎ Π»ΡΠ±ΠΎΠΌΡ ΠΊΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΌΠ°ΡΡΠΈΠ²Ρ, ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΠΎΠ»ΡΡΠ°ΡΡΠΈΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ², Π΄ΠΎΠ»ΠΆΠ½Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅Π²ΡΡ ΠΎΠ΄ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Ρ Π΅Π³ΠΎ Π³ΡΠ°Π½ΠΈΡ.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ, ΠΈΡ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΡΠ½ΠΎ Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ΅Π½. ΠΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅ΠΉ ΡΡΠΎΡΠΎΠ½ΠΎΠΉ. ΠΠ»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΡΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΠΊΠ΅ΡΠ° Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΠ΅ΡΠ²ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π² Π²ΠΈΠ΄Π΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΡΠ΅Π±ΡΠ΅Ρ, ΡΡΠΎΠ±Ρ ΠΌΠ°ΡΡΠΈΠ² ΡΠ°ΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π» ΠΌΠ°ΡΠΊΠ΅Ρ ΠΊΠΎΠ½ΡΠ°. ΠΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° ΡΠ²Π»ΡΡΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ Π² ΡΡΠΈΠ»Π΅ Π‘ (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 3.5.4). Π‘ΡΡΠΎΠΊΠΈ Π² ΡΡΠΈΠ»Π΅ Π‘ Ρ ΡΠ°Π½ΡΡΡΡ Π² ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°Ρ , ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠΈΠΌΠ²ΠΎΠ» ΠΊΠΎΡΠΎΡΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½ΡΠ»Π΅Π²ΡΠΌ. Π€ΡΠ½ΠΊΡΠΈΠΈ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠ΅ ΡΠΎ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ Π² ΡΡΠΈΠ»Π΅ Π‘, ΠΏΡΠ΅ΠΊΡΠ°ΡΠ°ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΊΠΎΠ³Π΄Π° Π²ΡΡΡΠ΅ΡΠ°ΡΡ Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ»:
void print(const char *cp) {
if (cp) // Π΅ΡΠ»ΠΈ cp Π½Π΅ Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ
while (*cp) // ΠΏΠΎΠΊΠ° ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½ΡΠ»Π΅Π²ΡΠΌ
cout << *cp++; // Π²ΡΠ²Π΅ΡΡΠΈ ΡΠΈΠΌΠ²ΠΎΠ» ΠΈ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ
}