ΠΡΠ»Π°Π΄ΠΎΡΠ½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ STLport Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΡΡ Π·Π°Π΄Π°ΡΡ. ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΡΠ΅ Π²ΡΠ·ΠΎΠ²Π° transform Π²ΡΠ΄Π°Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ (ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ STLport ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ C:\STLport):
C:\STLport\stlport\stl\debug\_iterator.h:265 STL assertion failure: _Dereferenceable(*this)
ΠΠ° ΡΡΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠ΅ΠΊΡΠ°ΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² ΡΠ»ΡΡΠ°Π΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ STLport Π²ΡΠ·ΡΠ²Π°Π΅Ρ abort. ΠΡΠ»ΠΈ Π²Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π΅ΡΠ΅, ΡΡΠΎΠ±Ρ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΈΠ½ΠΈΡΠΈΠΈΡΠΎΠ²Π°Π»ΠΎΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, STLport ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΈ Π½Π° ΡΡΠΎΡ ΡΠ΅ΠΆΠΈΠΌ.
Π§Π΅ΡΡΠ½ΠΎ Π³ΠΎΠ²ΠΎΡΡ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΡΠ΅ΠΌ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ, Π° ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΠΈ Π½ΠΎΠΌΠ΅Ρ ΡΡΡΠΎΠΊΠΈ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ STL, Π° Π½Π΅ ΠΊ ΡΡΡΠΎΠΊΠ΅ Ρ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ transform, Π½ΠΎ ΡΡΠΎ Π²ΡΠ΅ ΠΆΠ΅ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»ΡΡΡΠ΅ ΠΏΡΠΎΠΏΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° transform ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΏΠΎΠΏΡΡΠΎΠΊ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² ΠΏΡΠΈΡΠΈΠ½Π°Ρ ΡΠ°Π·ΡΡΡΠ΅Π½ΠΈΡ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ . Π ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ STLport ΠΎΡΡΠ°Π΅ΡΡΡ Π»ΠΈΡΡ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ-ΠΎΡΠ»Π°Π΄ΡΠΈΠΊ, Π²Π΅ΡΠ½ΡΡΡΡΡ ΠΏΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠΌΡ ΡΡΠ΅ΠΊΠ° ΠΊ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠΌΡ Π²Π°ΠΌΠΈ ΠΊΠΎΠ΄Ρ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΡΡΠΎ ΠΆΠ΅ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΎ. Π‘ΡΡΠΎΠΊΠ°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ°Ρ ΠΎΡΠΈΠ±ΠΊΡ, ΠΎΠ±ΡΡΠ½ΠΎ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ.
ΠΡΠ»Π°Π΄ΠΎΡΠ½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ STLport ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π΅Ρ ΡΠΈΡΠΎΠΊΠΈΠΉ ΡΠΏΠ΅ΠΊΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°ΠΌ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΎΠ², ΠΏΠΎΠΏΡΡΠΊΠΈ ΡΡΠ΅Π½ΠΈΡ ΠΈΠ· ΠΏΡΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ° ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΈ Ρ. Π΄. ΠΠΎΠ»ΡΠ΅Π±ΡΡΠ²ΠΎ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΎ Π½Π° Π²Π·Π°ΠΈΠΌΠ½ΠΎΠΌ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠΈ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ². ΠΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ Π΄Π²ΡΡ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ Π»ΠΈ ΠΎΠ½ΠΈ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ, Π° ΠΏΡΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° β ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΡ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π½Π΅Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ.
Π ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ STLport ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠΎΠ², ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΡ vector ΠΈ string ΡΠ²Π»ΡΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ ΠΊΠ»Π°ΡΡΠΎΠ², Π° Π½Π΅ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΌΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ STLport ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π² ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π΅ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅Ρ ΡΠ°Π·Π»ΠΈΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌΠΈ ΠΈ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ Π΄Π»Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΡΠΈΠΏΠΎΠ² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ². ΠΠ΄Π½ΠΎΠΉ ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΠΌ ΡΠ΅ΠΆΠΈΠΌΠΎΠΌ STLport.
β’
Π‘Π°ΠΉΡ Boost
Π 1997 Π³ΠΎΠ΄Ρ Π·Π°Π²Π΅ΡΡΠΈΠ»ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ, ΠΏΡΠΈΠ²Π΅Π΄ΡΠΈΠΉ ΠΊ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΠΠ΅ΠΆΠ΄ΡΠ½Π°ΡΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ° Π‘++. ΠΠ½ΠΎΠ³ΠΈΠ΅ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΈ Π±ΡΠ»ΠΈ ΡΠ°Π·ΠΎΡΠ°ΡΠΎΠ²Π°Π½Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, Π·Π° ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ΠΈ Π²ΡΡΡΡΠΏΠ°Π»ΠΈ, Π½Π΅ ΠΏΡΠΎΡΠ»ΠΈ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΎΡΠ±ΠΎΡ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΡΡΠΈΡ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ² Π±ΡΠ»ΠΈ ΡΠ»Π΅Π½Π°ΠΌΠΈ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΠΎΠΌΠΈΡΠ΅ΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ΠΈ ΡΠ΅ΡΠΈΠ»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΎΡΠ½ΠΎΠ²Ρ Π΄Π»Ρ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΎΡΠΎΠ³ΠΎ ΠΊΡΡΠ³Π° ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·Π°ΡΠΈΠΈ. Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΠΈΡ ΡΡΠΈΠ»ΠΈΠΉ ΡΡΠ°Π» ΡΠ°ΠΉΡ Boost, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΠΏΡΠΈΠ·Π²Π°Π½ Β«ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π‘++. ΠΡΠ½ΠΎΠ²Π½ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΡΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ Π‘ΡΠ°Π½Π΄Π°ΡΡΡ Π‘++Β». ΠΠ° ΡΡΠΎΠΉ ΡΠ΅Π»ΡΡ ΠΊΡΠΎΠ΅ΡΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΌΠΎΡΠΈΠ²:
Β«ΠΠΎ ΠΌΠ΅ΡΠ΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π²Ρ ΠΎΠ΄ΠΈΡ Π² "ΠΏΠΎΠ²ΡΠ΅Π΄Π½Π΅Π²Π½ΡΡ ΠΏΡΠ°ΠΊΡΠΈΠΊΡ", Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π΅Ρ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΊΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡ Π΅Π΅ Π΄Π»Ρ Π±ΡΠ΄ΡΡΠ΅ΠΉ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·Π°ΡΠΈΠΈ. ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π° ΡΠ°ΠΉΡ Boost.org ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΡΠΎΠ·Π΄Π°Π½ΠΈΡ "ΠΏΠΎΠ²ΡΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΉ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ"...Β».
ΠΠ½Π°ΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, Boost ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°, ΠΏΠΎΠΌΠΎΠ³Π°ΡΡΠ΅Π³ΠΎ ΠΎΡΠ΄Π΅Π»ΠΈΡΡ ΠΏΠ»Π΅Π²Π΅Π»Ρ ΠΎΡ Π·Π΅ΡΠ΅Π½ Π² ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π‘++. ΠΠΏΠΎΠ»Π½Π΅ Π΄ΠΎΡΡΠΎΠΉΠ½Π°Ρ ΠΌΠΈΡΡΠΈΡ, Π·Π°ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΠ°Ρ Π½Π°ΡΠ΅ΠΉ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ½ΠΎΡΡΠΈ.
Π’Π°ΠΊΠΆΠ΅ ΡΡΠΎΠΈΡ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΠ΄Π±ΠΎΡΠΊΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Π½Π°Ρ ΠΎΠ΄ΡΡΠΈΡ ΡΡ Π½Π° ΡΠ°ΠΉΡΠ΅ Boost. Π― Π½Π΅ ΡΡΠ°Π½Ρ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ Π΅Π΅ Π·Π΄Π΅ΡΡ Ρ ΠΎΡΡ Π±Ρ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΊ ΠΌΠΎΠΌΠ΅Π½ΡΡ Π²ΡΡ ΠΎΠ΄Π° ΠΊΠ½ΠΈΠ³ΠΈ Π½Π° ΡΠ°ΠΉΡΠ΅ Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ° ΠΏΠΎΡΠ²ΡΡΡΡ Π½ΠΎΠ²ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΠ»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ STL ΠΎΡΠΎΠ±ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ Π΄Π²Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΠ΅ΡΠ²Π°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ°Π±Π»ΠΎΠ½ shared_ptr, ΡΠΌΠ½ΡΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Ρ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠΎΠΌ ΡΡΡΠ»ΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ auto_ptr ΠΈΠ· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ Ρ ΡΠ°Π½ΠΈΡΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Ρ STL (ΡΠΌ. ΡΠΎΠ²Π΅Ρ 8). ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠΌΠ½ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ°Π±Π»ΠΎΠ½ shared_array, ΡΠΌΠ½ΡΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Ρ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠΎΠΌ ΡΡΡΠ»ΠΎΠΊ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ, Π½ΠΎ Π² ΡΠΎΠ²Π΅ΡΠ΅ 13 Π²ΠΌΠ΅ΡΡΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ vector ΠΈ string; Π½Π°Π΄Π΅ΡΡΡ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΏΠΎΠΊΠ°ΠΆΡΡΡΡ Π²Π°ΠΌ ΡΠ±Π΅Π΄ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ.
ΠΠΎΠΊΠ»ΠΎΠ½Π½ΠΈΠΊΠΈ STL ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠ΅Π½ΡΡ Π±ΠΎΠ³Π°ΡΡΠΉ Π°ΡΡΠΎΡΡΠΈΠΌΠ΅Π½Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π°. Π ΡΡΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°Ρ Π·Π°Π½ΠΎΠ²ΠΎ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ, Π·Π°Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ Π² ΠΎΡΠ½ΠΎΠ²Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ Π°Π΄Π°ΠΏΡΠ΅ΡΠΎΠ² STL, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ΅Π³ΠΎ Π±ΡΠ»ΠΈ ΡΠ½ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ, ΡΠ½ΠΈΠΆΠ°ΡΡΠΈΠ΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΎΡΠΎΠ². Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ bind2nd Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ mem_fun ΠΈ mem_fun_ref (ΡΠΌ. ΡΠΎΠ²Π΅Ρ 41) Π΄Π»Ρ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° Π²ΡΡΡΠ½ΡΠ΅ΡΡΡ, ΡΡΠΎ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ ΠΊΠΎΠ΄, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ not1 ΠΈ not2 Ρ ptr_fun ΠΈ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ, ΠΏΠΎΠ»ΡΡΠ°ΡΡΠ΅ΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅. ΠΡΠΈΡΠΈΠ½Π° Π² ΠΎΠ±ΠΎΠΈΡ ΡΠ»ΡΡΠ°ΡΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π±Π»ΠΎΠ½Π° ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ STL Π³Π΅Π½Π΅ΡΠΈΡΡΡΡ Β«ΡΡΡΠ»ΠΊΡ Π½Π° ΡΡΡΠ»ΠΊΡΒ», Π½ΠΎ Π² Π‘++ ΡΠ°ΠΊΠ°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Π·Π°ΠΏΡΠ΅ΡΠ΅Π½Π° (Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΠΎΠΌΠΈΡΠ΅Ρ ΠΏΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π‘ΡΠ°Π½Π΄Π°ΡΡ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ). ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Β«ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΡΡΠ»ΠΊΡΒ»:
class Widget {
public:
int readStream(istream& stream);// Π€ΡΠ½ΠΊΡΠΈΠΈ readStream
// ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ
}; //ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅
vector<Widget*> vw;
for_each( //ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΠ»Π°ΡΡΠΎΡΠΌ STL
vw.begin(),vw.end(), //ΠΏΡΠΈ ΡΡΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅
bind2nd(mem_fun(&Widget::readStream),cin) //ΠΏΡΡΠ°Π΅ΡΡΡ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ
);//ΡΡΡΠ»ΠΊΡ Π½Π° ΡΡΡΠ»ΠΊΡ.
//Π€ΡΠ°Π³ΠΌΠ΅Π½Ρ Π½Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ!
ΠΠ±ΡΠ΅ΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Boost ΡΠ΅ΡΠ°ΡΡ ΡΡΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ²ΡΡΠ°ΡΡ Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ.
ΠΡΠ»ΠΈ Π²Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅ΡΠ΅ΡΡ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ STL ΠΈ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ Π½ΠΈΠΌΠΈ ΠΏΠΎΠ±Π»ΠΈΠΆΠ΅, ΠΏΠΎΡΠΊΠΎΡΠ΅Π΅ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅ ΡΠ°ΠΉΡ Boost. ΠΡΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π²Π°Ρ ΠΏΡΠ³Π°ΡΡ ΠΈ Π²Ρ ΡΡΠΈΡΠ°Π΅ΡΠ΅, ΡΡΠΎ ΠΎΠ½ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠΌΠΈΡΠΎΡΠ²ΠΎΡΠ΅Π½ΠΈΡ ΠΌΠ°Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ Π°ΠΏΠΎΠ»ΠΎΠ³Π΅ΡΠΎΠ² Lisp, Π²ΡΠ½ΡΠΆΠ΄Π΅Π½Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ Π½Π° Π‘++, Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅ ΡΠ°ΠΉΡ Boost. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ Boost Π²Π°ΠΆΠ½Ρ, Π½ΠΎ ΠΎΠ½ΠΈ ΡΠΎΡΡΠ°Π²Π»ΡΡΡ Π»ΠΈΡΡ ΠΌΠ°Π»ΡΡ ΡΠ°ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, Π½Π°Ρ ΠΎΠ΄ΡΡΠ΅ΠΉΡΡ Π½Π° ΡΠ°ΠΉΡΠ΅.
ΠΠΈΡΠ΅ΡΠ°ΡΡΡΠ°
Π ΠΊΠ½ΠΈΠ³Π΅ ΠΈΠΌΠ΅ΡΡΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΉ, ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ Π½ΠΈΠΆΠ΅, Ρ ΠΎΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ Π»ΠΈΡΡ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Β«ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠ½ΠΎΡΡΠΈΒ». ΠΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π² ΠΊΠ½ΠΈΠ³Π΅ Π½Π΅ ΡΠΏΠΎΠΌΠΈΠ½Π°ΡΡΡΡ, ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Ρ ΠΊΡΡΠΆΠΊΠΎΠΌ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΈΡΡΡ.
ΠΠ΄ΡΠ΅ΡΠ° URL Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠΎΠΌΠ½Π΅Π²Π°Π»ΡΡ, ΡΡΠΎΠΈΡ Π»ΠΈ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΈΡ Π² ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅. Π ΠΈΡΠΎΠ³Π΅ Ρ ΡΠ΅ΡΠΈΠ», ΡΡΠΎ Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ URL ΡΡΠ°Π½Π΅Ρ Π½Π΅Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ, ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π΅ ΠΌΠ΅ΡΡΠΎΠ½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ Π½Π°ΠΉΡΠΈ Π΅Π³ΠΎ ΠΏΠΎ Π½ΠΎΠ²ΠΎΠΌΡ Π°Π΄ΡΠ΅ΡΡ.
ΠΠ½ΠΈΠ³ΠΈ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ ΠΌΠ½ΠΎΠΉ
[1] Scott Meyers, Β«Effective Π‘++: 50 Specific Ways to Improve Your Programs and DesignsΒ» (second edition), Addison-Wesley, 1998, ISBN 0-201-92488-9. Π’Π°ΠΊΠΆΠ΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π½Π° ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ΅ Β«Effective Π‘++Β» (ΡΠΌ. Π΄Π°Π»Π΅Π΅).
[2] Scott Meyers, Β«More Effective Π‘++: 35 New Ways to Improve Your Programs Π°Ρd DesignsΒ» (second edition), Addison-Wesley, 1996, ISBN 0-201-63371-Π₯. Π’Π°ΠΊΠΆΠ΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π½Π° ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ΅ Β«Effective Π‘++Β» (ΡΠΌ. Π΄Π°Π»Π΅Π΅).
β’ Scott Meyers, Β«Effective Π‘++ CD: 85 Specific Ways to Improve Your Programs and DesignsΒ» (second edition), Addison-Wesley, 1999, ISBN 0-201-31015-5. Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ ΠΎΠ±Π΅ΠΈΡ ΠΊΠ½ΠΈΠ³, Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΆΡΡΠ½Π°Π»ΡΠ½ΡΡ ΡΡΠ°ΡΠ΅ΠΉ ΠΏΠΎ ΡΠ΅ΠΌΠ΅ ΠΈ ΠΊΠΎΠ΅-ΠΊΠ°ΠΊΠΈΠ΅ Π½ΠΎΠ²ΠΈΠ½ΠΊΠΈ ΠΈΠ· ΠΎΠ±Π»Π°ΡΡΠΈ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΡ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΉ. ΠΠ° ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠΎΠΌ ΠΎΠ±ΡΠ°ΡΠ°ΠΉΡΠ΅ΡΡ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ: http://meyerscd.awl.com/. ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π½ΠΎΠ²ΠΈΠ½ΠΊΠ°Ρ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΠ°ΠΌ: http://zing.ncsl.nist.goc/hfweb/proceedings/meyers-jones/ΠΈ http://www.rm'crosoft.com/Mind/1099/browsing/browsing.htm.
ΠΠ½ΠΈΠ³ΠΈ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π°Π²ΡΠΎΡΠ°ΠΌΠΈ
[3] Nicolai Π. Josuttis, Β«The Π‘++ Standard Library: A Tutorial and ReferenceΒ», Addison-Wesley, 1999, ISBN 0-201-37926-0. ΠΠ΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΠ°Ρ ΠΊΠ½ΠΈΠ³Π°, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° Π‘++.
[4] Matthew Π. Austern, Β«Generic Programming and the STLΒ», Addison-Wesley, 1999, ISBN 0-201-30956-4. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΏΠ΅ΡΠ°ΡΠ½ΡΡ Π²Π΅ΡΡΠΈΡ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠ² web-ΡΠ°ΠΉΡΠ° SGI STL, http://www.sgi.com/tech/stl.
[5] ISO/IEC, Β«International Standard, Programming Languages β Π‘++Β», ISO/IEC 14882:1998(E), 1998. ΠΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ Π‘++. Π Π°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠΈΡΠ΅ΡΠΎΠΌ ANSI Π² ΡΠΎΡΠΌΠ°ΡΠ΅ PDF Π·Π° $18 ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ http://webstore. ansi.org/ansidocstore/default.asp.
[6] Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Β«Design Patterns: Elements of Reusable Object-Oriented SoftwareΒ», Addison-Wesley, 1995, ISBN 0-201 -63361-2[4]. Π’Π°ΠΊΠΆΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ Π½Π° ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ΅ Β«Design Patterns CDΒ», Addison-Wesley, 1998, ISBN 0-201-63498-8. ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π°Π²ΡΠΎΡΠΈΡΠ΅ΡΠ½ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ ΠΈΠ΄ΠΈΠΎΠΌΠ°ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Π‘++ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°ΡΡ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ ΠΈΠ΄ΠΈΠΎΠΌΡ ΠΈ Π΄Π΅ΡΠΆΠ°ΡΡ ΠΏΠΎΠ΄ ΡΡΠΊΠΎΠΉ ΡΡΡ ΠΊΠ½ΠΈΠ³Ρ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊ.
[7] Bjarne Stroustrup, Β«The Π‘++ Programming LanguageΒ» (third edition), Addison-Wesley, 1997, ISBN 0-201-88954-4. ΠΠ΄ΠΈΠΎΠΌΠ° Β«Π·Π°ΠΊΠ²Π°ΡΠ° ΡΠ΅ΡΡΡΡΠΎΠ² ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈΒ», ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌΠ°Ρ Π² ΡΠΎΠ²Π΅ΡΠ΅ 12, ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ 14.4.1 ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ, Π° ΠΊΠΎΠ΄ ΠΈΠ· ΡΠΎΠ²Π΅ΡΠ° 36 ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π½Π° Ρ. 530.
[8] Herb Sutter, Β«Exceptional Π‘++: 47 Engineering Puzzles, Programming Problems and SolutionsΒ», Addison-Wesley, 2000, ISBN 0-201-61562-2. ΠΠΎΡΡΠΎΠΉΠ½ΠΎΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΠΌΠΎΠ΅ΠΉ ΡΠ΅ΡΠΈΠΈ Β«Effective...Β». Π― Π±Ρ Π²ΡΡΠΎΠΊΠΎ ΠΎΡΠ΅Π½ΠΈΠ» ΡΡΡ ΠΊΠ½ΠΈΠ³Ρ Π² Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π±Ρ Π₯Π΅ΡΠ± Π½Π΅ ΠΏΠΎΠΏΡΠΎΡΠΈΠ» ΠΌΠ΅Π½Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΊ Π½Π΅ΠΉ ΠΏΡΠ΅Π΄ΠΈΡΠ»ΠΎΠ²ΠΈΠ΅.
[9] Herb Sutter, Β«More Exceptional Π‘++: 40 More Engineering Puzzles, Programming Problems and SolutionsΒ», Addison-Wesley, 2001, ISBN 0-201-70434-X. Π‘ΡΠ΄Ρ ΠΏΠΎ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΡ Ρ Π²ΠΈΠ΄Π΅Π», ΡΡΠ° ΠΊΠ½ΠΈΠ³Π° Π½ΠΈΡΡΡΡ Π½Π΅ Ρ ΡΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ.
[10] Dov Bulka, David Mayhew, Β«Efficient Π‘++: Performance Programming TechniquesΒ», Addison-Wesley, 2000, ISBN 0-201-37950-3. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ Π»ΡΡΡΠ°Ρ ΠΊΠ½ΠΈΠ³Π°, ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π½Π°Ρ Π²ΠΎΠΏΡΠΎΡΠ°ΠΌ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ Π² Π‘++.
[Π] Matt Austern, Β«How to Do Case-Insensitive String ComparisonΒ», Π‘++ Report, ΠΌΠ°ΠΉ 2000 Π³. ΠΡΠ° ΡΡΠ°ΡΡΡ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»Π΅Π·Π½Π°, ΡΡΠΎ ΠΎΠ½Π° Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π Π½Π°ΡΡΠΎΡΡΠ΅ΠΉ ΠΊΠ½ΠΈΠ³ΠΈ.