ΠΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ STL
ΠΡΠ΅Π΄ΠΈΡΠ»ΠΎΠ²ΠΈΠ΅
Β«...ΠΠ° Π½Π΅ΠΌ Π½Π΅ Π±ΡΠ»ΠΎ Π»Π΅Π½ΡΠΎΡΠΊΠΈ! ΠΠ΅ Π±ΡΠ»ΠΎ ΡΡΠ»ΡΠΊΠ°! ΠΠ΅ Π±ΡΠ»ΠΎ ΠΊΠΎΡΠΎΠ±ΠΊΠΈ ΠΈ Π½Π΅ Π±ΡΠ»ΠΎ ΠΌΠ΅ΡΠΊΠ°!Β»
ΠΠΎΠΊΡΠΎΡ ΠΡΡΡ, Β«ΠΠ°ΠΊ ΠΡΠΈΠ½Ρ ΡΠΊΡΠ°Π» Π ΠΎΠΆΠ΄Π΅ΡΡΠ²ΠΎΒ»Π― Π²ΠΏΠ΅ΡΠ²ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°Π» ΠΎ STL (Standard Template Library) Π² 1995 Π³ΠΎΠ΄Ρ. ΠΠΎΡ ΠΊΠ½ΠΈΠ³Π° Β«More Effective C++Β» Π·Π°Π²Π΅ΡΡΠ°Π»Π°ΡΡ ΠΊΡΠ°ΡΠΊΠΈΠΌ ΠΎΠ±Π·ΠΎΡΠΎΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΠΎ ΡΡΠΎΠ³ΠΎ ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΠΈ Π²ΡΠΊΠΎΡΠ΅ Ρ Π½Π°ΡΠ°Π» ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ Π²ΠΎΠΏΡΠΎΡΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° Π±ΡΠ΄Π΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½Π° ΠΊΠ½ΠΈΠ³Π° Β«Effective STLΒ».
ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Ρ Ρ ΡΠΎΠΏΡΠΎΡΠΈΠ²Π»ΡΠ»ΡΡ ΡΡΠΎΠΉ ΠΈΠ΄Π΅Π΅. Π‘Π½Π°ΡΠ°Π»Π° Ρ Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°Π» Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΠΌ ΠΎΠΏΡΡΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ STL ΠΈ Π½Π΅ ΡΡΠΈΡΠ°Π» Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ Π΄Π°Π²Π°ΡΡ ΡΠΎΠ²Π΅ΡΡ. ΠΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ»ΠΎ, ΠΈ Π½Π° ΡΠΌΠ΅Π½Ρ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ ΠΏΡΠΈΡΠ»ΠΈ Π΄ΡΡΠ³ΠΈΠ΅. ΠΠ΅ΡΡΠΏΠΎΡΠ½ΠΎ, ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΎΠ·Π½Π°ΡΠ°Π»ΠΎ ΠΏΡΠΎΡΡΠ² Π² ΠΎΠ±Π»Π°ΡΡΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ, Π½ΠΎ Π² ΠΎΠ±Π»Π°ΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ STL Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»ΠΈ ΡΠΈΡΡΠΎ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΊΡΡΠ²Π°ΡΡ Π³Π»Π°Π·Π°. ΠΠ΄Π°ΠΏΡΠ°ΡΠΈΡ Π»ΡΠ±ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ STL, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ°ΠΌΡΡ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΡ , Π±ΡΠ»Π° ΡΠΎΠΏΡΡΠΆΠ΅Π½Π° Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΡΡΠΎ ΠΎΠ±ΡΡΡΠ½ΡΠ»ΠΎΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·Π»ΠΈΡΠΈΡΠΌΠΈ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡ , Π½ΠΎ ΠΈ ΡΠ°Π·Π½ΡΠΌ ΡΡΠΎΠ²Π½Π΅ΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ². Π£ΡΠ΅Π±Π½ΠΈΠΊΠΈ ΠΏΠΎ STL Π±ΡΠ»ΠΈ ΡΠ΅Π΄ΠΊΠΎΡΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠ΅ Β«Π΄Π°ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² STLΒ» ΠΎΠΊΠ°Π·ΡΠ²Π°Π»ΠΎΡΡ Π·Π°Π΄Π°ΡΠ΅ΠΉ Π½Π΅ΠΏΡΠΎΡΡΠΎΠΉ. Π ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ»ΡΡ Ρ ΡΡΠΎΠΉ ΡΡΡΠ΄Π½ΠΎΡΡΡΡ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»Π° Π΄ΡΡΠ³Π°Ρ β ΠΏΠΎΠΈΡΠΊ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΈ ΡΠΎΡΠ½ΠΎΠΉ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. ΠΠ°ΠΆΠ΅ ΡΠ°ΠΌΠ°Ρ ΠΌΠ΅Π»ΠΊΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ STL ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°Π»Π°ΡΡ Π»Π°Π²ΠΈΠ½ΠΎΠΉ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, Π΄Π»ΠΈΠ½Π° ΠΊΠΎΡΠΎΡΡΡ Π΄ΠΎΡΡΠΈΠ³Π°Π»Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΏΡΠΈΡΠ΅ΠΌ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² ΡΠ΅ΡΡ ΡΠ»Π° ΠΎ ΠΊΠ»Π°ΡΡΠ°Ρ , ΡΡΠ½ΠΊΡΠΈΡΡ ΠΈ ΡΠ°Π±Π»ΠΎΠ½Π°Ρ , Π½Π΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π²ΡΠΈΡ ΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. ΠΡΠΈ Π²ΡΠ΅ΠΌ ΡΠ²Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΊ STL ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΡΡΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Ρ Π½Π΅ ΡΠ΅ΡΠ°Π»ΡΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°ΡΡ Π΅Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌ ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ Π·Π²Π΅Π½Π°. Π― Π½Π΅ Π±ΡΠ» ΡΠ²Π΅ΡΠ΅Π½ Π² ΡΠΎΠΌ, ΡΡΠΎ STL ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ.
ΠΠ°ΡΠ΅ΠΌ Ρ Π·Π°ΠΌΠ΅ΡΠΈΠ» Π½Π΅ΡΡΠΎ ΡΠ΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° Π²ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΎΠΌ ΠΈ ΡΠΊΠ²Π΅ΡΠ½ΠΎΠ΅ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π²ΡΠΈΠ΅ Π±Π΅ΡΡΠΌΡΡΠ»Π΅Π½Π½ΠΎΠ΅ Π½Π°Π³ΡΠΎΠΌΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΠΌΠΎΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ Ρ STL. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΠΎΠ½ΠΈ Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π»ΠΈ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ, Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π΅Π΅ Π² ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΡ Π²Π΅ΡΡΠΈΡΡ ΡΠ²ΠΎΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ! ΠΠ»Ρ ΠΌΠ΅Π½Ρ ΡΡΠΎ Π±ΡΠ»ΠΎ ΠΎΡΠΊΡΠΎΠ²Π΅Π½ΠΈΠ΅ΠΌ. Π― Π·Π½Π°Π», ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ STL, ΠΎΡΠ»ΠΈΡΠ°Π»ΠΈΡΡ ΡΠ»Π΅Π³Π°Π½ΡΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΎΠΉ, Π½ΠΎ Π»ΡΠ±Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΡΠ°Π΄ΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Π΄ΠΎΠ±ΡΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΎΠ±ΡΠ΅ΠΊΠ°Π» ΡΠ΅Π±Ρ Π½Π° ΡΡΡΠ΄Π½ΠΎΡΡΠΈ Ρ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΎΠΌ, Π½Π° ΡΠΊΠ²Π΅ΡΠ½ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΈ Π½Π΅Π²ΡΠ°Π·ΡΠΌΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ , Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΠ»Π° ΠΎΠ±Π»Π°Π΄Π°ΡΡ ΡΠ΅ΠΌ-ΡΠΎ Π±ΠΎΠ»ΡΡΠΈΠΌ, ΡΠ΅ΠΌ Ρ ΠΎΡΠΎΡΠ°Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°. ΠΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² ΠΏΠΎΠ»Π°Π³Π°Π»ΠΎ, ΡΡΠΎ Π΄Π°ΠΆΠ΅ ΠΏΠ»ΠΎΡ Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ STL Π»ΡΡΡΠ΅, ΡΠ΅ΠΌ Π΅Π΅ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅.
ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Ρ Π·Π½Π°Π», ΡΡΠΎ ΡΠΈΡΡΠ°ΡΠΈΡ Ρ STL Π±ΡΠ΄Π΅Ρ ΡΠ»ΡΡΡΠ°ΡΡΡΡ. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ Π±ΡΠ΄ΡΡ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ°ΡΡΡΡ ΠΊ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ Π‘ΡΠ°Π½Π΄Π°ΡΡΠ° (ΡΠ°ΠΊ ΠΎΠ½ΠΎ ΠΈ Π±ΡΠ»ΠΎ), ΠΏΠΎΡΠ²ΠΈΡΡΡ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½Π°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ (ΡΠΌ. ΡΠΏΠΈΡΠΎΠΊ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΡ Π½Π° Ρ. 203), Π° Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΡΡΠ°Π½Π΅Ρ Π±ΠΎΠ»Π΅Π΅ Π²ΡΠ°Π·ΡΠΌΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ (Π² ΡΡΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΡΠΈΡΡΠ°ΡΠΈΡ ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΆΠ΅Π»Π°ΡΡ Π»ΡΡΡΠ΅Π³ΠΎ, Π½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΡΠΎΠ²Π΅ΡΠ° 49 ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ Ρ ΡΠ°ΡΡΠΈΡΡΠΎΠ²ΠΊΠΎΠΉ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ). Π ΠΎΠ±ΡΠ΅ΠΌ, Ρ ΡΠ΅ΡΠΈΠ» Π²Π½Π΅ΡΡΠΈ ΡΠ²ΠΎΡ Π»Π΅ΠΏΡΡ Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ STL. Π’Π°ΠΊ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΡΡΠ° ΠΊΠ½ΠΈΠ³Π° β 50 ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΎΠ²Π΅ΡΠΎΠ² ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ STL Π² C++.
Π‘Π½Π°ΡΠ°Π»Π° Ρ Π½Π°ΠΌΠ΅ΡΠ΅Π²Π°Π»ΡΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠ½ΠΈΠ³Ρ Π·Π° Π²ΡΠΎΡΡΡ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ 1999 Π³. ΠΈ Π΄Π°ΠΆΠ΅ Π½Π°Π±ΡΠΎΡΠ°Π» Π΅Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΡΡ ΡΡΡΡΠΊΡΡΡΡ. ΠΠΎ ΠΏΠΎΡΠΎΠΌ ΠΏΠ»Π°Π½Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈΡΡ, Ρ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠ» ΡΠ°Π±ΠΎΡΡ Π½Π°Π΄ ΠΊΠ½ΠΈΠ³ΠΎΠΉ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π» Π²Π²ΠΎΠ΄Π½ΡΠΉ ΠΊΡΡΡ ΠΏΠΎ STL, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅ΠΏΠΎΠ΄Π°Π²Π°Π»ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ Π³ΡΡΠΏΠΏΠ°ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ². ΠΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π· Π³ΠΎΠ΄ Ρ Π²Π΅ΡΠ½ΡΠ»ΡΡ ΠΊ ΠΊΠ½ΠΈΠ³Π΅ ΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°ΡΡΠΈΡΠΈΠ» ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠΏΡΡΠ°, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π·Π° Π²ΡΠ΅ΠΌΡ ΠΏΡΠ΅ΠΏΠΎΠ΄Π°Π²Π°Π½ΠΈΡ. Π ΠΊΠ½ΠΈΠ³Π΅ Ρ ΠΏΠΎΡΡΠ°ΡΠ°Π»ΡΡ ΠΎΡΠ²Π΅ΡΠΈΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π°ΡΠΏΠ΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² STL, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π²Π°ΠΆΠ½ΡΠ΅ Π΄Π»Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ².
Π‘ΠΊΠΎΡΡ ΠΡΠ³Π»Π°Ρ ΠΠ΅ΠΉΠ΅ΡΡ Π‘ΡΠ°ΡΡΠΎΡΠ΄, ΠΡΠ΅Π³ΠΎΠ½ ΠΠΏΡΠ΅Π»Ρ 2001 Π³.ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠ½ΠΎΡΡΠΈ
ΠΠ° Π³ΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΈΡΡ Π½Π° ΡΠΎ, ΡΡΠΎΠ±Ρ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² STL, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΡΠ΅Π±Π½ΡΠΉ ΠΊΡΡΡ ΠΈ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΡ ΠΊΠ½ΠΈΠ³Ρ, Ρ ΠΏΠΎΠ»ΡΡΠΈΠ» Π½Π΅ΠΎΡΠ΅Π½ΠΈΠΌΡΡ ΠΏΠΎΠΌΠΎΡΡ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΎΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π»ΡΠ΄Π΅ΠΉ. Π₯ΠΎΡΡ ΠΎΡΠΎΠ±ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ ΠΠ°ΡΠΊΠ° Π ΠΎΠ΄ΠΆΠ΅ΡΡΠ° (Mark Rodgers), Π²Π΅Π»ΠΈΠΊΠΎΠ΄ΡΡΠ½ΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ²ΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ ΡΡΠ΅Π±Π½ΠΎΠ³ΠΎ ΠΊΡΡΡΠ° ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΠΈΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ. ΠΡ Π½Π΅Π³ΠΎ Ρ ΡΠ·Π½Π°Π» ΠΎΠ± STL Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ ΠΎΡ ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ. ΠΠ°ΡΠΊ ΡΠ°ΠΊΠΆΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ» ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ, Π° Π΅Π³ΠΎ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΡ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠΎΠΌΠΎΠ³Π»ΠΈ ΡΠ»ΡΡΡΠΈΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π΅ΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π».
ΠΡΡΠ³ΠΈΠΌ Π²ΡΠ΄Π°ΡΡΠΈΠΌΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π±ΡΠ»ΠΈ ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ Usenet; ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π½ΡΠ΅ ΡΠ·ΡΠΊΡ C++, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ comp.lang.c++.moderated (Β«clcmΒ»), comp.std.c++ ΠΈ microsoft.public.vc.stl. Π‘Π²ΡΡΠ΅ Π΄Π΅ΡΡΡΠΈ Π»Π΅Ρ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΈ ΡΡΠΈΡ ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΉ ΠΎΡΠ²Π΅ΡΠ°Π»ΠΈ Π½Π° ΠΌΠΎΠΈ Π²ΠΎΠΏΡΠΎΡΡ ΠΈ ΡΡΠ°Π²ΠΈΠ»ΠΈ Π·Π°Π΄Π°ΡΠΈ, Π½Π°Π΄ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΌΠ½Π΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ Π΄ΡΠΌΠ°ΡΡ. Π― Π³Π»ΡΠ±ΠΎΠΊΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Ρ Usenet Π·Π° ΠΏΠΎΠΌΠΎΡΡ Π² ΡΠ°Π±ΠΎΡΠ΅ Π½Π°Π΄ ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΎΠΉ ΠΈ ΠΌΠΎΠΈΠΌΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌΠΈ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΡΠΌΠΈ ΠΏΠΎ C++.
ΠΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ STL ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π»ΠΎΡΡ ΠΏΠΎΠ΄ Π²Π»ΠΈΡΠ½ΠΈΠ΅ΠΌ ΡΡΠ΄Π° ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΉ, ΡΠ°ΠΌΡΠ΅ Π²Π°ΠΆΠ½ΡΠ΅ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ Π² ΠΊΠΎΠ½ΡΠ΅ ΠΊΠ½ΠΈΠ³ΠΈ. ΠΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ Ρ ΠΏΠΎΡΠ΅ΡΠΏΠ½ΡΠ» ΠΈΠ· ΡΡΡΠ΄Π° ΠΠΆΠΎΡΠ°ΡΡΠΈΡΠ° Β«The C++ Standard LibraryΒ» [3].
ΠΠ΄Π΅ΠΈ ΠΈ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡ, ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΡΡΠΎΠΈΡ ΡΡΠ° ΠΊΠ½ΠΈΠ³Π°, Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ Π΄ΡΡΠ³ΠΈΠΌ Π°Π²ΡΠΎΡΠ°ΠΌ, Ρ ΠΎΡΡ Π² Π½Π΅ΠΉ Π΅ΡΡΡ ΠΈ ΡΡΠ΄ ΠΌΠΎΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΎΡΠΊΡΡΡΠΈΠΉ. Π― ΠΏΠΎΡΡΠ°ΡΠ°Π»ΡΡ ΠΏΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΎΡΡΠ»Π΅Π΄ΠΈΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΈ, ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ» ΠΏΠΎΡΠ΅ΡΠΏΠ½ΡΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π», Π½ΠΎ ΡΡΠ° Π·Π°Π΄Π°ΡΠ° ΠΎΠ±ΡΠ΅ΡΠ΅Π½Π° Π½Π° ΠΏΡΠΎΠ²Π°Π», ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠΎΠ±ΠΈΡΠ°Π»Π°ΡΡ ΠΈΠ· ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»Π³ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠΈΠΎΠ΄Π° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π½ΠΈΠΆΠ΅ ΡΠΏΠΈΡΠΎΠΊ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΠΏΠΎΠ»ΠΎΠ½, Π½ΠΎ Π½ΠΈΡΠ΅Π³ΠΎ Π»ΡΡΡΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡΡ Π½Π΅ ΠΌΠΎΠ³Ρ. Π£ΡΡΠΈΡΠ΅, ΡΡΠΎ Π² ΡΡΠΎΠΌ ΡΠΏΠΈΡΠΊΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΈ, ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Ρ ΡΠ·Π½Π°Π²Π°Π» ΠΎ ΡΠ΅Ρ ΠΈΠ»ΠΈ ΠΈΠ½ΡΡ ΠΈΠ΄Π΅ΡΡ ΠΈ ΠΏΡΠΈΠ΅ΠΌΠ°Ρ , Π° Π½Π΅ ΠΈΡ ΠΏΠ΅ΡΠ²ΠΎΠΎΡΠΊΡΡΠ²Π°ΡΠ΅Π»ΠΈ.
Π ΡΠΎΠ²Π΅ΡΠ΅ 1 Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΠ·Π»ΠΎΠ²ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π»ΡΡΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠΈ, ΠΏΠΎΠ·Π°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°Π½ΠΎ ΠΈΠ· ΡΠ°Π·Π΄Π΅Π»Π° 5.11.2 Β«The C++ Standard LibraryΒ» [3]. ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ typedef ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΡΠΈΠΏΠ° ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ ΠΏΠ°ΠΌΡΡΠΈ ΠΈΠ· ΡΠΎΠ²Π΅ΡΠ° 2 Π±ΡΠ» ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ ΠΠ°ΡΠΊΠΎΠΌ Π ΠΎΠ΄ΠΆΠ΅ΡΡΠΎΠΌ. Π‘ΠΎΠ²Π΅Ρ 5 Π²Π΄ΠΎΡ Π½ΠΎΠ²Π»Π΅Π½ ΡΡΠ°ΡΡeΠΉ Π ΠΈΠ²ΡΠ° (Reeves) Β«STL GotchasΒ» [17]. Π ΠΎΡΠ½ΠΎΠ²Ρ ΡΠΎΠ²Π΅ΡΠ° 8 Π·Π°Π»ΠΎΠΆΠ΅Π½ ΡΠΎΠ²Π΅Ρ 37 ΠΊΠ½ΠΈΠ³ΠΈ Π‘Π°ΡΡΠ΅ΡΠ° Β«Exceptional C++Β» [8], Π° ΠΠ΅Π²Π»ΠΈΠ½ Π₯Π΅Π½Π½ΠΈ (Kevlin Henney) ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠ» Π²Π°ΠΆΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°Ρ , Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² auto_ptr. Π ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡΡ Usenet ΠΡΡΡ ΠΡΡΠ΅ΡΠ½ (Matt Austem) ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠ» ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΉ ΠΏΠ°ΠΌΡΡΠΈ, Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠ΅ ΠΌΠ½ΠΎΠΉ Π² ΡΠΎΠ²Π΅Ρ 11. Π‘ΠΎΠ²Π΅Ρ 12 ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°Ρ ΡΠ°ΠΉΡΠ° SGI STL [21], ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²ΠΎΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ. ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ΅ ΡΡΡΠ»ΠΎΠΊ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΉ ΡΡΠ΅Π΄Π΅ ΠΈΠ· ΡΠΎΠ²Π΅ΡΠ° 13 ΠΏΠΎΡΠ΅ΡΠΏΠ½ΡΡΠ° ΠΈΠ· ΡΡΠ°ΡΡΠΈ Π‘Π°ΡΡΠ΅ΡΠ° [20]. ΠΠ΄Π΅Ρ ΡΠΎΠ²Π΅ΡΠ° 15 Π±ΡΠ»Π° ΠΏΠΎΠ΄ΡΠΊΠ°Π·Π°Π½Π° ΡΡΠ°ΡΡΠ΅ΠΉ Π ΠΈΠ²ΡΠ° Β«Using Standard string in the Real World, Part 2Β» [18]. ΠΠ΅ΡΠΎΠ΄ΠΈΠΊΠ° Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π΄Π°Π½Π½ΡΡ Π² vector, ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Π² ΡΠΎΠ²Π΅ΡΠ΅ 16, Π±ΡΠ»Π° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° ΠΠ°ΡΠΊΠΎΠΌ Π ΠΎΠ΄ΠΆΠ΅ΡΡΠΎΠΌ. Π ΡΠΎΠ²Π΅Ρ 17 Π±ΡΠ»Π° Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ· Usenet, Π°Π²ΡΠΎΡΡ β Π‘ΠΈΠΌΠ΅Π» ΠΠ°ΡΠ°Π½ (Siemel Naran) ΠΈ ΠΠ°ΡΠ» ΠΠ°ΡΡΠΎΠ½ (Carl Barron). Π‘ΠΎΠ²Π΅Ρ 18 Π±ΡΠ» ΠΏΠΎΠ·Π°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°Π½ ΠΈΠ· ΡΡΠ°ΡΡΠΈ Π‘Π°ΡΡΠ΅ΡΠ° Β«When Is a Container Not a Container?Β» [12]. ΠΠ»Ρ ΡΠΎΠ²Π΅ΡΠ° 20 ΠΠ°ΡΠΊ Π ΠΎΠ΄ΠΆΠ΅ΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ» ΠΈΠ΄Π΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π² ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΡΠ°Π·ΡΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ, Π° Π‘ΠΊΠΎΡΡ ΠΠ΅Π²Π°Π½Π΄ΠΎΠ²ΡΠΊΠΈ (Scott Lewandowski) ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π» ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡ DereferenceLess. Π‘ΠΎΠ²Π΅Ρ 21 ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΈ ΠΡΠ³Π° Π₯Π°ΡΡΠΈΡΠΎΠ½Π° (Doug Harrison) Π² ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΡ microsoft.public.vc.stl, Π½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ ΡΠ°ΠΌΠΊΠΈ ΡΡΠΎΠ³ΠΎ ΡΠΎΠ²Π΅ΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΡΠ°Π²Π΅Π½ΡΡΠ²Π°, ΠΏΡΠΈΠ½ΡΠ» Ρ ΡΠ°ΠΌ. Π‘ΠΎΠ²Π΅Ρ 22 ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΡΡΠ°ΡΡΠ΅ Π‘Π°ΡΡΠ΅ΡΠ° Β«Standard Library News: sets and mapsΒ» [13]. Π‘ΠΎΠ²Π΅Ρ 23 Π±ΡΠ» ΠΏΠΎΠ΄ΡΠΊΠ°Π·Π°Π½ ΡΡΠ°ΡΡΠ΅ΠΉ ΠΡΡΠ΅ΡΠ½Π° Β«Why You Shouldn't Use set β and What to Use InsteadΒ» [15]; ΠΡΠ²ΠΈΠ΄ Π‘ΠΌΠΎΠ»Π»Π±Π΅ΡΠ³ (David Smallberg) ΡΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°Π» ΠΌΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ DataCompare. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Ρ ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² Dinkumware ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΎ Π½Π° ΡΡΠ°ΡΡΠ΅ ΠΠ»Π°ΡΠ³Π΅ΡΠ° (Plauger) Β«Hash TablesΒ» [16]. ΠΠ°ΡΠΊ Π ΠΎΠ΄ΠΆΠ΅ΡΡ Π½Π΅ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ Ρ Π²ΡΠ²ΠΎΠ΄Π°ΠΌΠΈ ΡΠΎΠ²Π΅ΡΠ° 26, Π½ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎ ΡΡΠΎΡ ΡΠΎΠ²Π΅Ρ Π±ΡΠ» ΠΏΠΎΠ΄ΡΠΊΠ°Π·Π°Π½ Π΅Π³ΠΎ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ΠΌ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΡΠΈΠΏΠ° iterator. Π Π°Π±ΠΎΡΠ° Π½Π°Π΄ ΡΠΎΠ²Π΅ΡΠΎΠΌ 29 Π²Π΄ΠΎΡ Π½ΠΎΠ²Π»ΡΠ»Π°ΡΡ Π΄ΠΈΡΠΊΡΡΡΠΈΡΠΌΠΈ Π² Usenet Ρ ΡΡΠ°ΡΡΠΈΠ΅ΠΌ ΠΡΡΡΠ° ΠΡΡΠ΅ΡΠ½Π° ΠΈ ΠΠΆΠ΅ΠΉΠΌΡΠ° ΠΠ°Π½ΡΠ΅ (James Kanze); Π½Π° ΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ²Π»ΠΈΡΠ»Π° ΡΡΠ°ΡΡΡ ΠΠ»Π°ΡΡΠ° ΠΡΠ΅ΡΡΠ° (Klaus Kreft) ΠΈ ΠΠ½ΠΆΠ΅Π»ΠΈΠΊΠΈ ΠΠ°Π½Π³Π΅Ρ (Angelika Langer) Β«Π Sophisticated Implementation of User-Defined Inserters and ExtractorsΒ» [25]. Π‘ΠΎΠ²Π΅Ρ 30 ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°ΠΊ ΡΠ°Π·Π΄Π΅Π»Π° 5.4.2 ΠΊΠ½ΠΈΠ³ΠΈ ΠΠΆΠΎΡΠ°ΡΡΠΈΡΠ° Β«The C++ Standard LibraryΒ» [3]. Π ΡΠΎΠ²Π΅ΡΠ΅ 31 ΠΠ°ΡΠΊΠΎ ΠΠ°Π»Π»Π° ΠΠ°ΡΠΏΠ΅ΡΠΈΠ½Π° (Marco Dalla Gasperina) ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ» ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ nth_element Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΌΠ΅Π΄ΠΈΠ°Π½Ρ, Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΡΠΎΡΠ΅Π½ΡΠΈΠ»Π΅ΠΉ Π²Π·ΡΡΠΎ ΠΏΡΡΠΌΠΎ ΠΈΠ· ΡΠ°Π·Π΄Π΅Π»Π° 18.7.1 ΠΊΠ½ΠΈΠ³ΠΈ Π‘ΡΡΠ°ΡΡΡΡΡΠΏΠ° (Stroustrup) Β«The C++ Programming LanguageΒ». Π‘ΠΎΠ²Π΅Ρ 32 Π±ΡΠ» Π²Π΄ΠΎΡ Π½ΠΎΠ²Π»Π΅Π½ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°ΠΌΠΈ ΡΠ°Π·Π΄Π΅Π»Π° 5.6.1 ΠΊΠ½ΠΈΠ³ΠΈ ΠΠΆΠΎΡΠ°ΡΡΠΈΡΠ° Β«The C++ Standard LibraryΒ». Π‘ΠΎΠ²Π΅Ρ 35 ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ ΠΏΠΎΠ΄ Π²Π»ΠΈΡΠ½ΠΈΠ΅ΠΌ ΡΡΠ°ΡΡΠΈ ΠΡΡΠ΅ΡΠ½Π° Β«How to Do Case-Insensitive String ComparisonΒ» [11], Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΠΆΠ΅ΠΉΠΌΡΠ° ΠΠ°Π½ΡΠ΅ ΠΈ ΠΠΆΠΎΠ½Π° ΠΠΎΡΡΠ΅ΡΠ° (John Potter) ΠΏΠΎΠΌΠΎΠ³Π»ΠΈ ΠΌΠ½Π΅ Π»ΡΡΡΠ΅ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² ΡΡΡΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ copy_if, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½Π°Ρ Π² ΡΠΎΠ²Π΅ΡΠ΅ 36, ΠΏΠΎΠ·Π°ΠΈΠΌΡΡΠ²ΠΎΠ²Π°Π½Π° ΠΈΠ· ΡΠ°Π·Π΄Π΅Π»Π° 18.6.1 ΠΊΠ½ΠΈΠ³ΠΈ Π‘ΡΡΠ°ΡΡΡΡΡΠΏΠ° Β«The C++ Programming LanguageΒ» [7]. Π ΠΎΡΠ½ΠΎΠ²Ρ ΡΠΎΠ²Π΅ΡΠ° 39 Π·Π°Π»ΠΎΠΆΠ΅Π½Ρ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ ΠΠΆΠΎΡΠ°ΡΡΠΈΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΏΠ΅ΡΠ²ΡΠ΅ ΡΠΏΠΎΠΌΡΠ½ΡΠ» ΠΎ Β«ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΠ°Ρ Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌΒ» Π² ΡΠ²ΠΎΠ΅ΠΉ ΠΊΠ½ΠΈΠ³Π΅ Β«The C++ Standard LibraryΒ» [3] ΠΈ Π² ΡΡΠ°ΡΡΠ΅ Β«Predicates vs. Function ObjectsΒ» [14]. Π ΡΠ²ΠΎΠ΅ΠΉ ΠΊΠ½ΠΈΠ³Π΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π²Π΄ΡΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ ΠΈΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, Ρ ΠΎΡΡ ΡΠ΅ΡΠΌΠΈΠ½ Β«ΡΠΈΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡΒ» ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΌΠ½Π΅. Π ΡΠΎΠ²Π΅ΡΠ΅ 41 ΠeΡΡ ΠΡΡΠ΅ΡΠ½ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΠ» ΠΌΠΎΠΈ ΠΏΠΎΠ΄ΠΎΠ·ΡΠ΅Π½ΠΈΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΈΠΌΠ΅Π½ mem_fun ΠΈ mem_fun_ref. Π‘ΠΎΠ²Π΅Ρ 42 Π±Π΅ΡΠ΅Ρ ΡΠ²ΠΎΠ΅ Π½Π°ΡΠ°Π»ΠΎ ΠΈΠ· Π»Π΅ΠΊΡΠΈΠΈ, ΠΏΡΠΎΡΠΈΡΠ°Π½Π½ΠΎΠΉ ΠΌΠ½Π΅ ΠΠ°ΡΠΊΠΎΠΌ Π ΠΎΠ΄ΠΆΠ΅ΡΡΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°ΡΡΡΠΈΠ» ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ ΡΡΠΎΠ³ΠΎ ΡΠΎΠ²Π΅ΡΠ°. ΠΠ°ΡΠΊΡ Π ΠΎΠ΄ΠΆΠ΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π² ΡΠΎΠ²Π΅ΡΠ΅ 44 Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΏΡΠΈ Π²Π½Π΅ΡΠ½Π΅ΠΌ ΠΏΠΎΠΈΡΠΊΠ΅ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Ρ map ΠΈ multimap Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ ΠΎΠ±Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΏΠ°ΡΡ, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΠΏΡΠΈ ΠΏΠΎΠΈΡΠΊΠ΅ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ (ΠΊΠ»ΡΡ). Π ΡΠΎΠ²Π΅ΡΠ΅ 45 ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΡ ΡΠ°Π·Π½ΡΡ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ² clem, ΡΡΠ΅Π΄ΠΈ ΠΊΠΎΡΠΎΡΡΡ ΠΠΆΠΎΠ½ ΠΠΎΡΡΠ΅Ρ, ΠΠ°ΡΡΠΈΠ½ ΠΠ°ΡΠΏΠ΅ΡΡΠΊΠΈ (Marcin Kasperski), Pete Becker (ΠΠΈΡ ΠΠ΅ΠΊΠ΅Ρ), ΠΠ΅Π½Π½ΠΈΡ ΠΠ΅Π»Ρ (Dennis Yelle) ΠΈ ΠΡΠ²ΠΈΠ΄ ΠΠ±ΡΠ°Ρ Π°ΠΌΠ΅ (David Abrahams). ΠΡΠ²ΠΈΠ΄ Π‘ΠΌΠΎΠ»Π»Π±Π΅ΡΠ³ ΠΏΠΎΠ΄ΡΠΊΠ°Π·Π°Π» ΠΌΠ½Π΅ ΠΈΠ΄Π΅Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ equal_range Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° Π½Π° Π±Π°Π·Π΅ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² Π² ΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Ρ . ΠΠ½Π΄ΡΠ΅ΠΉ ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡΠ΅ΡΠΊΡ (Andrei Alexandrescu) ΠΏΠΎΠΌΠΎΠ³ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² ΡΡΠ»ΠΎΠ²ΠΈΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Β«ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΡΡΠ»ΠΊΡΒ», ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌΠΎΠΉ Π² ΡΠΎΠ²Π΅ΡΠ΅ 50; ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π² ΠΊΠ½ΠΈΠ³Π΅ ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΠ°ΡΠΊΠ° Π ΠΎΠ΄ΠΆΠ΅ΡΡΠ°, Π²Π·ΡΡΠΎΠΌ Ρ ΡΠ°ΠΉΡΠ° Boost [22].