ΠΡΠΈΠΌΠ΅Ρ 2. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Π»ΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅, Π° Π½Π΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎΡΡΠ΅ΠΉ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ Π·Π°ΡΠ°ΡΡΡΡ ΠΏΡΠΎΡΡΠ½ΡΠ΅Ρ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΡΠΏΡΠΎΡΠ°Π΅Ρ Π΅Π³ΠΎ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠ°ΡΡΠΎ ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π΅Π΅ (ΡΠΌ. ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ 13 ΠΈ 31).
Π‘ΡΡΠ»ΠΊΠΈ[Abelson96] β’ [Bentley00] Β§4 β’ [Cargill92] pp. 91-93 β’ [Cline99] Β§3.05-06 β’ [Constantine95] Β§29 β’ [Keffer95] p. 17 β’ [Lakos96] Β§9.1, Β§10.2.4 β’ [McConnell93] β’ [Meyers01] Β§47 β’ [Stroustrup00] Β§1.7, Β§2.1, Β§6.2.3, Β§23.4.2, Β§23.4.3.2 β’ [Sutter00] Β§40-41, Β§46 β’ [Sutter04] Β§29
7. ΠΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΡΡΠ΅ΡΠΎΠΌ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΠΈ
ΠΡΠ΅Π³Π΄Π° ΠΏΠΎΠΌΠ½ΠΈΡΠ΅ ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΌ ΡΠΎΡΡΠ΅ Π΄Π°Π½Π½ΡΡ . ΠΠΎΠ΄ΡΠΌΠ°ΠΉΡΠ΅ ΠΎΠ± Π°ΡΠΈΠΌΠΏΡΠΎΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ Π±Π΅Π· ΠΏΡΠ΅ΠΆΠ΄Π΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ. ΠΠ»Π³ΠΎΡΠΈΡΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ, Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΎΠ΅ ΠΈ, ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π½Π΅ Ρ ΡΠΆΠ΅, ΡΠ΅ΠΌ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ Π·Π°Π²ΠΈΡΡΡΠ΅Π΅ ΠΎΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΡ Π΄Π°Π½Π½ΡΡ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ. ΠΠΎΠ³Π΄Π° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²Π°ΠΆΠ½ΠΎΠΉ ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ, Π² ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΈΠ·-Π·Π° ΡΠΎΡΡΠ° ΠΎΠ±ΡΠ΅ΠΌΠΎΠ² Π΄Π°Π½Π½ΡΡ , Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ»ΡΡΡΠ°ΡΡ O-ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°, Π° Π½Π΅ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ ΠΌΠΈΠΊΡΠΎΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΠΌΠΈ ΡΠΈΠΏΠ° ΡΠΊΠΎΠ½ΠΎΠΌΠΈΠΈ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΡΠ° ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅Ρ Π²Π°ΠΆΠ½ΡΡ ΡΠΎΡΠΊΡ ΡΠ°Π²Π½ΠΎΠ²Π΅ΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡΠΌΠΈ 8 ΠΈ 9 β Π½Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΏΡΠ΅ΠΆΠ΄Π΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΈ Π½Π΅ ΠΏΠ΅ΡΡΠΈΠΌΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΏΡΠ΅ΠΆΠ΄Π΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ. ΠΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π΄Π°Π½Π½ΡΠΉ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» ΡΡΡΠ΄Π½ΡΠΌ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅Π²Π΅ΡΠ½ΠΎ ΠΈΡΡΠΎΠ»ΠΊΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ ΡΠΎΠ²Π΅Ρ ΠΎ "ΠΏΡΠ΅ΠΆΠ΄Π΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ". ΠΡΠΎ Π½Π΅ ΡΠ°ΠΊ.
ΠΠΎΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ»ΠΊΠΈ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠΉ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ. ΠΠ°ΠΌΡΡΡ ΠΈ Π΄ΠΈΡΠΊΠΎΠ²Π°Ρ Π΅ΠΌΠΊΠΎΡΡΡ ΡΠ°ΡΡΡΡ ΡΠΊΡΠΏΠΎΠ½Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ; Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ 1988 ΠΏΠΎ 2004 Π³ΠΎΠ΄ Π΅ΠΌΠΊΠΎΡΡΡ Π΄ΠΈΡΠΊΠΎΠ² ΡΠΎΡΠ»Π° ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π½Π° 112% Π² Π³ΠΎΠ΄ (ΠΏΠΎΡΡΠΈ Π² 1900 ΡΠ°Π· Π·Π° Π΄Π΅ΡΡΡΠΈΠ»Π΅ΡΠΈΠ΅). ΠΡΠ΅Π²ΠΈΠ΄Π½ΡΠΌ ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ΠΌ ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΊΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ Π»ΡΠ±ΠΎΠΉ Π²Π°Ρ ΡΠ΅Π³ΠΎΠ΄Π½ΡΡΠ½ΠΈΠΉ ΠΊΠΎΠ΄ Π·Π°Π²ΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π΄Π΅Π»ΠΎ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΌΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ β Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ! ΠΠ»ΠΎΡ ΠΎΠ΅ (Ρ ΡΠΆΠ΅ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ) Π°ΡΠΈΠΌΠΏΡΠΎΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΡΠ°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΡ Π½Π° ΠΊΠΎΠ»Π΅Π½ΠΈ Π΄Π°ΠΆΠ΅ ΡΠ°ΠΌΡΡ ΠΌΠΎΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΏΡΠΎΡΡΠΎ Π·Π°Π²Π°Π»ΠΈΠ² Π΅Π΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π΄Π°Π½Π½ΡΡ .
ΠΠ°ΡΠΈΡΠ° ΠΏΡΠΎΡΠΈΠ² ΡΠ°ΠΊΠΎΠ³ΠΎ Π±ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π²ΡΡΡΠ°ΠΈΠ²Π°Π½ΠΈΡ Π² Π½Π°ΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΡΠ°Π½Π΅Ρ Π·Π°ΠΏΠ°Π΄Π½Π΅ΠΉ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ, Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ , Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ, Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΎΠΊΠΎΠ½, ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², Π±ΠΈΡΠΎΠ², ΠΏΠ΅ΡΠ΅ΡΡΠ»Π°Π΅ΠΌΡΡ ΠΏΠΎ ΠΊΠ°Π½Π°Π»Π°ΠΌ ΡΠ²ΡΠ·ΠΈ. ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· Π²Π°ΠΆΠ½ΡΡ ΡΠ°ΠΊΡΠΎΡΠΎΠ² ΡΡΠΏΠ΅Ρ Π° ΡΠ°ΠΊΠΎΠΉ Π·Π°ΡΠΈΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π‘++ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Π½Π°Π΄ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ STL.
ΠΠ΄Π΅ΡΡ ΠΈ Π½Π°Π΄ΠΎ ΠΈΡΠΊΠ°ΡΡ ΡΠΎΡΠΊΡ ΡΠ°Π²Π½ΠΎΠ²Π΅ΡΠΈΡ. ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ Π½Π΅Π²Π΅ΡΠ½ΠΎ ΠΏΡΠΈΠ±Π΅Π³Π°ΡΡ ΠΊ ΠΏΡΠ΅ΠΆΠ΄Π΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΠ½ΡΡΠ½ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Π² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ Π±ΠΎΠ»ΡΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΌΠΎΠ² Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡΡΡ. ΠΠ΅ ΠΌΠ΅Π½Π΅Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ ΠΈ ΡΠΎ, ΡΡΠΎ Π½Π΅Π²Π΅ΡΠ½ΠΎ ΠΏΡΠΈΠ±Π΅Π³Π°ΡΡ ΠΈ ΠΊ ΠΏΡΠ΅ΠΆΠ΄Π΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠ΅ΡΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, Π·Π°ΠΊΡΡΠ²Π°Ρ Π³Π»Π°Π·Π° Π½Π° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² (Π-ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ), Π° ΠΈΠΌΠ΅Π½Π½ΠΎ β ΡΡΠΎΠΈΠΌΠΎΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π΄Π°Π½Π½ΡΡ , Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌ.
ΠΠ°Π½Π½ΡΠΉ ΡΠΎΠ²Π΅Ρ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π΄Π²ΡΡ ΡΠ°ΡΡΠ΅ΠΉ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π΄Π°ΠΆΠ΅ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΡΠ°Π½Π΅Ρ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, Π±ΡΠ΄ΡΡ Π»ΠΈ ΠΎΠ±ΡΠ΅ΠΌΡ Π΄Π°Π½Π½ΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²Π΅Π»ΠΈΠΊΠΈ, ΡΡΠΎΠ±Ρ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ (ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠ°ΡΡΠΈ), Π½ΠΎ Π½Π΅ ΡΠΏΠΎΡΠΎΠ±Π½Ρ ΠΊ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π΅ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅Π½Π΅Π΅ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π½Π΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌΡ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ½ΡΡΠ½ΠΎΡΡΠΈ ΠΈ ΡΠ΄ΠΎΠ±ΠΎΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΠΈ ΠΊΠΎΠ΄Π° (ΡΠΌ. ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ 6). ΠΠΎ Π²ΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΎ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΠΌΡΡ Ρ ΡΡΡΠΏΡΠΈΠ·Π°ΠΌΠΈ. ΠΡ ΠΏΠΈΡΠ΅ΠΌ Π΄Π΅ΡΡΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠ΄Π°, Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΎΠ½ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡΠ΄ΡΡ ΠΈΠΌΠ΅ΡΡ Π΄Π΅Π»Π° Ρ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ Π½Π°Π±ΠΎΡΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ . Π ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠ°ΠΊ β Π² Π΄Π΅Π²ΡΡΠΈ ΡΠ»ΡΡΠ°ΡΡ ΠΈΠ· Π΄Π΅ΡΡΡΠΈ. Π Π΄Π΅ΡΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π΅ΠΌΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΡΠΎ Π½Π΅ ΡΠ°Π· ΡΠ»ΡΡΠ°Π»ΠΎΡΡ Ρ Π½Π°ΠΌΠΈ, ΠΈ ΠΌΡ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ ΡΡΠΎ ΡΠ»ΡΡΠ°Π»ΠΎΡΡ (ΠΈΠ»ΠΈ ΡΠ»ΡΡΠΈΡΡΡ) ΠΈ Ρ Π²Π°ΠΌΠΈ. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΌΡ Π²Π½ΠΎΡΠΈΠ»ΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π»ΠΈ ΠΈΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΌ, Π½ΠΎ Π»ΡΡΡΠ΅ Π±ΡΠ»ΠΎ Π±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΠ°ΠΊΠΈΡ Π·Π°ΡΡΡΠ΄Π½Π΅Π½ΠΈΠΉ ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π»ΠΈΡΠ½Π΅ΠΉ ΡΠ°Π±ΠΎΡΡ. Π’Π°ΠΊ ΡΡΠΎ ΠΏΡΠΈ ΠΏΡΠΎΡΠΈΡ ΡΠ°Π²Π½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ (Π²ΠΊΠ»ΡΡΠ°Ρ ΠΏΠΎΠ½ΡΡΠ½ΠΎΡΡΡ ΠΈ ΡΠ΄ΠΎΠ±ΠΎΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΡ) Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΡΠΎΠ²Π΅ΡΠ°ΠΌΠΈ.
β’ ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π³ΠΈΠ±ΠΊΠΈΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π²ΠΌΠ΅ΡΡΠΎ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°. ΠΠ°ΡΡΠΈΠ² "Π±ΠΎΠ»ΡΡΠΈΠΉ, ΡΠ΅ΠΌ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠΈΠΉ ΠΌΠ°ΡΡΠΈΠ², ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠ½Π΅ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ" ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ ΠΈ Π½Π°ΡΡΡΠ΅Π½ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ (ΡΠΌ. ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ 77). ΠΠ°ΡΡΠΈΠ²Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΡΠ°Π·ΠΌΠ΅ΡΡ Π΄Π°Π½Π½ΡΡ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΈ ΠΈΠ·Π²Π΅ΡΡΠ½Ρ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
β’ Π‘Π»Π΅Π΄ΡΠ΅Ρ ΡΠΎΡΠ½ΠΎ Π·Π½Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°. ΠΠ΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅ ΠΎ ΡΠ°ΠΊΠΎΠΉ Π»ΠΎΠ²ΡΡΠΊΠ΅, ΠΊΠ°ΠΊ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π΄ΡΡΠ³ΡΡ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΡΡΠΎ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π΄Π΅Π»Π°Π΅Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΈΡΠ½ΡΠΌ (ΡΠΌ., Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ 81).
β’ ΠΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΠ΅ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π±ΡΡΡΡΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ. ΠΠ΄Π΅Π°Π»ΡΠ½Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ push_back ΠΈΠ»ΠΈ ΠΏΠΎΠΈΡΠΊ Π² Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡΠ΅ (ΡΠΌ. ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ 76 ΠΈ 80). ΠΠ΅ΠΏΠ»ΠΎΡ ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΡΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΡ O(log N), ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ set/map ΠΈ lower_bound ΠΈΠ»ΠΈ upper_bound Ρ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° (ΡΠΌ. ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ 76, 85 ΠΈ 86). ΠΠΎΠΏΡΡΡΠΈΠΌΠ° Π»ΠΈΠ½Π΅ΠΉΠ½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ O(N), ΠΊΠ°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ vector::insert ΠΈΠ»ΠΈ for_each (ΡΠΌ. ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ 76, 81 ΠΈ 84).
β’ ΠΡΡΠ°ΠΉΡΠ΅ΡΡ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΡ, Π³Π΄Π΅ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π°ΡΡΠ°ΡΠΈΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΡΠΈΠ»ΠΈΡ Π½Π° ΠΏΠΎΠΈΡΠΊ Π·Π°ΠΌΠ΅Π½Ρ ΠΈΠΌΠ΅ΡΡΠ΅Π³ΠΎΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΡΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΡ O(N log N) ΠΈΠ»ΠΈ O(N) (Π΅ΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠ²Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°), ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π½Π΅ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ°Π΄Π΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΌΠ° Π΄Π°Π½Π½ΡΡ . Π’Π°ΠΊ, ΠΈΠΌΠ΅Π½Π½ΠΎ Π² ΡΡΠΎΠΌ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΡΠΈΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Π² ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ 81 ΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°ΠΌΠΈ (ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΡΠ½ΠΎ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ) ΠΈΡ ΠΊΠΎΠΏΠΈΡΠΌ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ (ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΡΠ½ΠΎ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΈΡΠ½Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ΄Π½Π° Π»ΠΈΠ½Π΅ΠΉΠ½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π΄ΡΡΠ³ΡΡ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ; ΡΠΌ. ΠΏΡΠΈΠΌΠ΅Ρ 1 Π² ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ 81).
β’ ΠΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΊΡΠΏΠΎΠ½Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ, Π΅ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π²Ρ Π½Π΅ "ΠΏΡΠΈΠΏΠ΅ΡΡΡ ΠΊ ΡΡΠ΅Π½Π΅" ΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅ΡΠ΅ Π΄ΡΡΠ³ΠΎΠ³ΠΎ Π²ΡΡ ΠΎΠ΄Π°. ΠΡΠΈΡΠ΅, Π½Π΅ ΠΆΠ°Π»Π΅Ρ ΡΠΈΠ», Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΠΈΠ±Π΅Π³Π½ΡΡΡ ΠΊ ΡΠΊΡΠΏΠΎΠ½Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΠΌΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ, Π³Π΄Π΅ Π΄Π°ΠΆΠ΅ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌΡ ΠΏΠ°Π΄Π΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
ΠΠΎ-Π²ΡΠΎΡΡΡ , ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π·Π°ΠΌΠ΅ΡΡ ΠΏΠΎΠΊΠ°ΠΆΡΡ, ΡΡΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½ΡΠΆΠ½Π° ΠΈ Π²Π°ΠΆΠ½Π°, Π² ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΏΡΠΈ ΡΠΎΡΡΠ΅ Π΄Π°Π½Π½ΡΡ , ΡΠΊΠΎΠ½ΡΠ΅Π½ΡΡΠΈΡΡΠΉΡΠ΅ ΡΡΠΈΠ»ΠΈΡ Π½Π° ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΠΈ O-ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ, Π° Π½Π΅ Π½Π° ΠΌΠΈΠΊΡΠΎΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΡ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΡΠ°ΠΊ, ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΠ΅ (ΠΈΠ»ΠΈ Π»ΡΡΡΠΈΠ΅) Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΡΠ°ΠΌ, Π³Π΄Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅, Π³Π΄Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅, Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΡ, ΠΈ ΡΠΆ ΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ β ΡΠΊΡΠΏΠΎΠ½Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ .
Π‘ΡΡΠ»ΠΊΠΈ[Bentley00] Β§6, Β§8, Appendix 4 β’ [Cormen01] β’ [Kernighan99] Β§7 β’ [Knuth97a] β’ [Knuth97b] β’ [Knuth98] β’ [McConnell93) Β§5.1-4, Β§10.6 β’ [Murray93] Β§9.11 β’ [Sedgewick98] β’ [Stroustrup00] Β§17.1.2
8. ΠΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΏΡΠ΅ΠΆΠ΄Π΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ
ΠΠ°ΠΊ Π³Π»Π°ΡΠΈΡ ΠΏΠΎΡΠ»ΠΎΠ²ΠΈΡΠ°, Π½Π΅ ΠΏΠΎΠ΄Π³ΠΎΠ½ΡΠΉΡΠ΅ ΡΠΊΠ°ΡΡΡΡΡ Π»ΠΎΡΠ°Π΄Ρ. ΠΡΠ΅ΠΆΠ΄Π΅Π²ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π½Π΅ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½Π° ΠΈ Π±ΡΡΡΡΠΎ Π²Ρ ΠΎΠ΄ΠΈΡ Π² ΠΏΡΠΈΠ²ΡΡΠΊΡ. ΠΠ΅ΡΠ²ΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ: Π½Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΠΉΡΠ΅. ΠΡΠΎΡΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ (ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠΊΡΠΏΠ΅ΡΡΠΎΠ²): Π½Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΠΉΡΠ΅ Π½ΠΈ Π² ΠΊΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅. Π‘Π΅ΠΌΡ ΡΠ°Π· ΠΎΡΠΌΠ΅ΡΡ, ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΠΉ.
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅Π [Stroustrup00] Β§6 ΠΈΠΌΠ΅Π΅ΡΡΡ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½Π°Ρ ΡΠΈΡΠ°ΡΠ°:
ΠΡΠ΅ΠΆΠ΄Π΅Π²ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ β ΠΊΠΎΡΠ΅Π½Ρ Π²ΡΠ΅Ρ Π±Π΅Π΄.
β ΠΠΎΠ½Π°Π»ΡΠ΄ ΠΠ½ΡΡ (Donald Knuth) [ΡΠΈΡΠΈΡΡΠ΅Ρ Π₯ΠΎΠ°ΡΠ° (Hoare)]Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ.
β ΠΠΎΠ½ ΠΠ΅Π½ΡΠ»ΠΈ (Jon Bentley)Π₯ΠΎΠ°Ρ ΠΈ ΠΠ½ΡΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΠΏΡΠ°Π²Ρ (ΡΠΌ. ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ 6 ΠΈ ΡΡΡ). ΠΠΎ ΠΏΡΠ°Π² ΠΈ ΠΠ΅Π½ΡΠ»ΠΈ (ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ 9).
ΠΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΏΡΠ΅ΠΆΠ΄Π΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΊΠ°ΠΊ ΡΡΠ»ΠΎΠΆΠ½Π΅Π½ΠΈΠ΅ Π΄ΠΈΠ·Π°ΠΉΠ½Π° ΠΈΠ»ΠΈ ΠΊΠΎΠ΄Π° (ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π΅Π³ΠΎ ΠΌΠ΅Π½Π΅Π΅ ΡΠ΄ΠΎΠ±ΠΎΡΠΈΡΠ°Π΅ΠΌΡΠΌ) Π²ΠΎ ΠΈΠΌΡ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΠΊΠΎΠ³Π΄Π° ΡΡΠΈΠ»ΠΈΡ Π½Π΅ ΠΎΠΏΡΠ°Π²Π΄ΡΠ²Π°ΡΡΡΡ Π΄ΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΡ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅Π°Π»ΡΠ½ΡΠΌΠΈ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ΠΌ Ρ ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ ΡΠ΅Π»ΡΡ). ΠΠ°ΡΠ°ΡΡΡΡ ΡΠ°ΠΊΠΈΠ΅ ΡΡΠΈΠ»ΠΈΡ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡ ΠΊ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΡΠ΅Π³Π΄Π° ΠΏΠΎΠΌΠ½ΠΈΡΠ΅:
ΠΠΎΡΠ°Π·Π΄ΠΎ, Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΏΡΠΎΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±ΡΡΡΡΠΎΠΉ, ΡΠ΅ΠΌ Π±ΡΡΡΡΡΡ β ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ.
ΠΠΎΡΡΠΎΠΌΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π΅ ΠΊΠΎΠ½ΡΠ΅Π½ΡΡΠΈΡΡΠΉΡΠ΅ΡΡ Π½Π° ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΠΎΠ΄ Π±ΡΡΡΡΡΠΌ, Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π΅Π³ΠΎ Π½Π°Π΄ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ ΠΈ ΡΠ΄ΠΎΠ±ΠΎΡΠΈΡΠ°Π΅ΠΌΡΠΌ (ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ 6). Π―ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΎΡΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ, ΠΏΡΠΎΡΠ΅ ΠΏΠΎΠ½ΡΡΡ, ΠΏΡΠΎΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π΅Π»Π°ΡΡ β ΠΈ ΠΏΡΠΎΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ. Π£ΡΠ»ΠΎΠΆΠ½Π΅Π½ΠΈΡ, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ, Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π²Π½Π΅ΡΡΠΈ ΠΏΠΎΠ·ΠΆΠ΅ β ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ.
ΠΠΌΠ΅ΡΡΡΡ Π΄Π²Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΡΠΈΡΠΈΠ½Ρ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΏΡΠ΅ΠΆΠ΄Π΅Π²ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π·Π°ΡΠ°ΡΡΡΡ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±ΡΡΡΡΠ΅Π΅. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΠΎΠ±ΡΠ΅ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΠ»ΠΎΡ ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ Π±ΡΡΡΡΠ΅Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½ΡΡΠ΅ ΠΏΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡ, ΠΈ Π³Π΄Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΌΠΎΠ΅ ΡΠ·ΠΊΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ Π² ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠΎΠΌ ΠΊΠΎΠ΄Π΅. Π ΡΠΈΡΠ»ΠΎ ΡΠ°ΠΊΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² Π²Ρ ΠΎΠ΄ΡΡ ΠΈ Π°Π²ΡΠΎΡΡ ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ, ΠΈ Π²Ρ. ΠΠΎΠ΄ΡΠΌΠ°ΠΉΡΠ΅ ΡΠ°ΠΌΠΈ β ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π·Π°ΡΠ°ΡΡΡΡ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΌΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°ΠΌΠΈ, Π³Π»ΡΠ±ΠΎΠΊΠΎΠΉ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠ΅ΠΉ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΡ, ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠΌ- ΠΌΠ½ΠΎΠ³ΠΈΠΌ Π΄ΡΡΠ³ΠΈΠΌ. ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ, Π½Π°Ρ ΠΎΠ΄ΡΡΠΈΠΉΡΡ Π½Π°Π΄ Π²ΡΠ΅ΠΌ ΡΡΠΈΠΌ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΠΌ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ Π²Π°Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ, ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°ΡΡΡ Π½Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΌ Π·Π½Π°Π½ΠΈΠΈ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΈ Π΅Π³ΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ, Ρ ΡΠ΅ΠΌ ΡΡΠΎΠ±Ρ ΡΡΠΎΡ ΠΊΠΎΠ΄ Π² ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ. ΠΠ°Π΄ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ Π½Π°Ρ ΠΎΠ΄ΠΈΡΠ΅ΡΡ Π²Ρ, Ρ Π²Π°ΡΠΈΠΌΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡΠΌΠΈ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΡ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΊΠΎΠ΄. Π£ Π²Π°Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅Ρ ΡΠ°Π½ΡΠΎΠ² Π²Π½Π΅ΡΡΠΈ ΡΠ°ΠΊΡΡ ΠΌΠΈΠΊΡΠΎΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΠΎΠ²ΡΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΡΠ°Π»ΡΠ½ΡΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ ΠΊΠΎΠ΄Π°. ΠΡΠ°ΠΊ, ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ, Π° ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡΠΌ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ Π²ΡΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ΅Π»Π΅ΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ. ΠΠΎΠΊΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅ Π΄ΠΎΠΊΠ°Π·Π°Π½Π° β Π²Π°ΡΠΈΠΌ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠΌ β1 Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°. (ΠΡΠ»ΠΈ ΠΊΡΠΎ-ΡΠΎ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΡ Π²Π°Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° β ΠΏΠΎΡΡΠ΅Π±ΡΠΉΡΠ΅ Π΄ΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΡΡΡΠ² Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΡΠΎΠ³ΠΎ.)