ΠΡΠΈΠΌΠ΅Ρ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ vector Π΄Π»Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠ². Π Π°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΠΎΠ΅ Π·Π°Π±Π»ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ list ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ "ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ list βΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΉ ΡΠΈΠΏ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ", ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Π²ΡΡΠ°Π²ΠΊΠ° Π² ΡΡΠ΅Π΄ΠΈΠ½Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. Π’ΠΈΠΏ vector Π΄Π»Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠ² ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΅Π³Π΄Π° ΠΏΡΠ΅Π²ΠΎΡΡ ΠΎΠ΄ΠΈΡ ΡΠΈΠΏ list. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Π²ΡΡΠ°Π²ΠΊΠ° Π² ΡΡΠ΅Π΄ΠΈΠ½Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ°Π±ΠΎΡΡ Ρ vector, ΠΈ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ³ΠΎ β Ρ list, Π²Π΅ΠΊΡΠΎΡ Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ ΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ Π±ΡΡΡΡΠ΅Π΅ β Π·Π° ΡΡΠ΅Ρ ΠΌΠ΅Π½ΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Ρ; ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Π°ΡΠΈΠΌΠΏΡΠΎΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ°Π±ΠΎΡΡ list ΠΏΡΠΎΡΠ²Π»ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ Π±ΠΎΠ»ΡΡΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π°Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ vector, ΠΏΠΎΠΊΠ° ΡΠ°Π·ΠΌΠ΅ΡΡ Π΄Π°Π½Π½ΡΡ Π½Π΅ ΠΏΠΎΡΡΠ΅Π±ΡΡΡ ΠΈΠ½ΠΎΠ³ΠΎ Π²ΡΠ±ΠΎΡΠ° (ΡΠΌ. ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ 7), Π»ΠΈΠ±ΠΎ ΠΏΠΎΠΊΠ° Π½Π΅ ΡΡΠ°Π½Π΅Ρ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠΎΠ³ΠΎΠΉ Π³Π°ΡΠ°Π½ΡΠΈΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΠΊΠΎΠΏΠΈΡΡΡΡΠΈΠΌ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ ΠΈΠ»ΠΈ ΠΊΠΎΠΏΠΈΡΡΡΡΠΈΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ ΡΠΈΠΏΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Ρ ΡΠ°Π½ΡΡΠΈΡ ΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅. Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π²Π°ΠΆΠ½ΡΠΌ, ΡΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ list ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΡΡΠΎΠ³ΡΡ Π³Π°ΡΠ°Π½ΡΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΡΡΠ°Π²ΠΊΠΈ Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ ΡΠ°ΠΊΠΈΡ ΡΠΈΠΏΠΎΠ².
Π‘ΡΡΠ»ΠΊΠΈ[Austern99] Β§5.4.1 β’ [Π‘++03] Β§23.1.1 β’ [Josuttis99] Β§6.9 β’ [Meyers01] Β§1-2, Β§13, Β§16, Β§23, Β§25 β’ [Musser01] Β§6.1 β’ [Stroustrup00] Β§17.1, Β§17.6 β’ [Sutter00] Β§7, Β§20 β’ [Sutter02] Β§7
77. ΠΠΌΠ΅ΡΡΠΎ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ vector ΠΈ string
ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π² ΡΡΠΈΠ»Π΅ Π‘, Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ ΠΈ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΡΡ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ vector ΠΈΠ»ΠΈ string Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΄Π΅Π»Π°Π΅Ρ ΠΏΡΠΎΡΠ΅ Π²Π°ΡΡ ΠΆΠΈΠ·Π½Ρ, Π½ΠΎ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π±ΠΎΠ»Π΅Π΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΡ ΠΈ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅Π‘Π΅Π³ΠΎΠ΄Π½Ρ Π΅Π΄Π²Π° Π»ΠΈ Π½Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌΠΈ Π²ΠΎΠΏΡΠΎΡΠ°ΠΌΠΈ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ²Π»ΡΡΡΡΡ Π²ΠΎΠΏΡΠΎΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±ΡΡΠ΅ΡΠ°. ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π½Π΅ΠΌΠ°Π»ΠΎ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΉΡΡΠ²Π°, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ΄Π°Π΅ΡΡΡ ΠΎΡΡΠ°ΡΡΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ. ΠΡΠ΅ ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ²ΡΠ·Π°Π½Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ°ΡΡΡ ΡΡΠ΅Π΄ΡΡΠ² Π‘, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ, ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΈ ΠΈΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠ°, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΡΡ Π²ΡΡΡΠ½ΡΡ Π²ΠΌΠ΅ΡΡΠΎ ΡΠ°ΠΊΠΈΡ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΉ, ΠΊΠ°ΠΊ Π±ΡΡΠ΅ΡΡ, Π²Π΅ΠΊΡΠΎΡΡ ΠΈ ΡΡΡΠΎΠΊΠΈ.
ΠΠΎΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΠΏΡΠΈΡΠΈΠ½, ΠΏΠΎ ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌ Π² ΡΡΠΈΠ»Π΅ Π‘ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠ΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° Π‘++.
β’ ΠΠ½ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΡΡ. ΠΠΎΠ»ΡΡΠ΅ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π±ΡΡΠ΅ΡΠΎΠ² Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ "Π±ΠΎΠ»ΡΡΠΈΠΌ, ΡΠ΅ΠΌ Π»ΡΠ±Π°Ρ ΡΠ°Π·ΡΠΌΠ½Π°Ρ Π΄Π»ΠΈΠ½Π°" ("Π±ΠΎΠΌΠ±Π° Ρ ΡΠ°ΡΠΎΠ²ΡΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠΌ" β Π²ΠΎΡ ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΡ ΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅), ΠΈΠ»ΠΈ ΡΠΏΠ»ΠΎΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ reallΠΎΡ ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ.
β’ Π£ Π½ΠΈΡ Π±ΠΎΠ³Π°ΡΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. ΠΡ Π»Π΅Π³ΠΊΠΎ ΠΈ Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ.
β’ ΠΠ½ΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡ Ρ ΠΌΠΎΠ΄Π΅Π»ΡΡ ΠΏΠ°ΠΌΡΡΠΈ Π² Π‘. vector ΠΈ string::c_str ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌ API Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π² Π‘++ vector ΡΠ»ΡΠΆΠΈΡ "ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π½ΠΈΠΊΠΎΠΌ" ΠΊ Π‘ ΠΈ Π΄ΡΡΠ³ΠΈΠΌ ΡΠ·ΡΠΊΠ°ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ (ΡΠΌ. ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ 76 ΠΈ 78).
β’ ΠΠ½ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ. Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ (Π² ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅) ΠΈΡΠ΅ΡΠ°ΡΠΎΡΡ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Π½Ρ Π²ΡΡΠ²ΠΈΡΡ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΊΠ»Π°ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΏΠ°ΠΌΡΡΠΈ. ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ β Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ΠΈΠΌΠΈ! (Π‘ΠΌ. ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ 83.)
β’ ΠΠ½ΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ ΡΠ½ΠΈΠΆΠ°ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ Π²Π°ΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. Π ΠΊΠ»Π°ΡΡΠ°Ρ vector ΠΈ string ΠΏΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΡ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΡΡ Π² ΠΏΠΎΠ»ΡΠ·Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ (Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, Π½Π΅ Π² ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅). Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π»ΡΡΡΠ΅ΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎΠΉ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΡΠ΅ΠΌ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ.
β’ ΠΠ½ΠΈ ΡΡΠΈΠΌΡΠ»ΠΈΡΡΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ. Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, ΠΎ ΠΊΠΎΡΠΎΡΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½Π°Ρ ΠΏΡΠΎΡΡΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π±Ρ ΠΈ Π½Π΅ ΠΏΠΎΠ΄ΡΠΌΠ°Π»ΠΈ.
ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠΏΡΠ°Π²Π΄Π°Π½Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½ Π½Π° ΡΡΠ°Π΄ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, float[3] Π΄Π»Ρ ΡΡΠ΅Ρ ΠΌΠ΅ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΈ; ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡΠΎΠΌΡ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ).
Π‘ΡΡΠ»ΠΊΠΈ[Alexandrescu01Π°] β’ [Dewhurst03] Β§13, Β§60, Β§68 β’ [Meyers01] Β§13, Β§16 β’ [Stroustrup00] Β§3.5-7, Β§5.3, Β§20.4.1, Β§C.7 β’ [Sutter00] Β§36
78. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ vector (ΠΈ string::c_str) Π΄Π»Ρ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½ΡΠΌΠΈ Ρ API Π½Π° Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ
vector ΠΈ string::c_str ΡΠ»ΡΠΆΠ°Ρ ΡΠ»ΡΠ·ΠΎΠΌ Π΄Π»Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ API Π½Π° Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ . ΠΠ΄Π½Π°ΠΊΠΎ Π½Π΅ ΠΏΠΎΠ»Π°Π³Π°ΠΉΡΠ΅ΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΡ ΡΠ²Π»ΡΡΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌΠΈ; Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π°Π΄ΡΠ΅ΡΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΡΠ»Π°Π΅ΡΡΡ vector<T>::iterator iter, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ &*iter.
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅vector (Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ) ΠΈ string::c_str ΠΈ string::data (Π²ΠΎ Π²ΡΠΎΡΡΡ) ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ Π½Π°ΠΈΠ»ΡΡΡΠΈΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½ΡΠΌΠΈ Ρ API Π½Π° Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΈ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ Π½Π° Π‘ Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ.
ΠΠ°Π½Π½ΡΠ΅ vector Π²ΡΠ΅Π³Π΄Π° Ρ ΡΠ°Π½ΡΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΠ°ΠΊ ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π°Π΄ΡΠ΅ΡΠ° ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π²Π΅ΠΊΡΠΎΡΠ° Π΄Π°Π΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π΅Π³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ &*v.begin(), &v[0] ΠΈΠ»ΠΈ &v.front() Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ v. ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° n-ΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π²Π΅ΠΊΡΠΎΡΠ° Π»ΡΡΡΠ΅ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΡΠΎΠ²Π΅ΡΡΠΈ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π°Π΄ΡΠ΅Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, &v.begin()[n] ΠΈΠ»ΠΈ &v[n]) Π²ΠΌΠ΅ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π½Π°ΡΠ°Π»ΠΎ Π΄Π°Π½Π½ΡΡ Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΠΊΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, (&v.front())[n]). ΠΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π² ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ v (ΡΠΌ. ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ 83).
ΠΠ΅Π»ΡΠ·Ρ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ v.begin() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠ»ΠΈ, Π² ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅, ΡΡΠΎ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΡ Π²Π΅ΠΊΡΠΎΡΠ° ΡΠ²Π»ΡΡΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌΠΈ. Π₯ΠΎΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ STL ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ vector<T>::iterator ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΡΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ T*, ΠΈΡΠ΅ΡΠ°ΡΠΎΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ (ΠΈ Π²ΡΠ΅ ΡΠ°ΡΠ΅ ΡΠ°ΠΊ ΠΎΠ½ΠΎ ΠΈ Π΅ΡΡΡ) ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ (Π΅ΡΠ΅ ΡΠ°Π· ΡΠΌ. ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡ 83).
Π₯ΠΎΡΡ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ Π΄Π»Ρ string ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΡΠΉ Π±Π»ΠΎΠΊ ΠΏΠ°ΠΌΡΡΠΈ, ΡΡΠΎ Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ, ΡΠ°ΠΊ ΡΡΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π°Π΄ΡΠ΅Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π² ΡΡΡΠΎΠΊΠ΅, ΡΡΠΈΡΠ°Ρ Π΅Π³ΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΌ Π½Π° Π²ΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΡΡΠΎΠΊΠΈ. Π₯ΠΎΡΠΎΡΠ°Ρ Π½ΠΎΠ²ΠΎΡΡΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ string::c_str Π²ΡΠ΅Π³Π΄Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΡΠΎΠΊΡ Π² ΡΡΠΈΠ»Π΅ Π‘ Ρ Π·Π°Π²Π΅ΡΡΠ°ΡΡΠΈΠΌ Π½ΡΠ»Π΅Π²ΡΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ (string::data ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΡΠΉ Π±Π»ΠΎΠΊ ΠΏΠ°ΠΌΡΡΠΈ, Π½ΠΎ Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ Π½Π°Π»ΠΈΡΠΈΡ Π·Π°Π²Π΅ΡΡΠ°ΡΡΠ΅Π³ΠΎ Π½ΡΠ»Π΅Π²ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π°).
ΠΠΎΠ³Π΄Π° Π²Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π΄Π°Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° v ΡΠΈΠΏΠ° vector, ΠΊΠΎΠ΄ Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘ ΠΌΠΎΠΆΠ΅Ρ ΠΊΠ°ΠΊ ΡΠΈΡΠ°ΡΡ, ΡΠ°ΠΊ ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ v; ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΡ ΠΎΠ΄ΠΈΡΡ Π·Π° Π³ΡΠ°Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΡ . Π₯ΠΎΡΠΎΡΠΎ ΠΏΡΠΎΠ΄ΡΠΌΠ°Π½Π½ΡΠΉ API Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π½Π°ΡΡΠ΄Ρ Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΌ Π»ΠΈΠ±ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² (Π΄ΠΎ v.size()), Π»ΠΈΠ±ΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ (&*v.begin()+v.size()).
ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΠΈΠΏΠ° T, ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΠΎΡ vector ΠΈΠ»ΠΈ string, ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΅Π³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ (ΠΈΠ»ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ Π΅Π³ΠΎ) ΡΡΠ½ΠΊΡΠΈΠΈ API Π½Π° Π΄ΡΡΠ³ΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΌΠ°ΡΡΠΈΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΠΈΠΏΠ° T, ΡΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π² (ΠΈΠ»ΠΈ ΠΈΠ·) vector<T>, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠΎΠΎΠ±ΡΠ°ΡΡΡΡ Ρ ΡΠ°ΠΊΠΈΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ.
Π‘ΡΡΠ»ΠΊΠΈ[Josuttis99] Β§6.2.3, Β§11.2.4 β’ [Meyers01] Β§16 β’ [Musser01] Β§B β’ [Stroustrup00] Β§16.3.1
79. Π₯ΡΠ°Π½ΠΈΡΠ΅ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Ρ ΡΠΎΠ»ΡΠΊΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ
Π₯ΡΠ°Π½ΠΈΡΠ΅ ΠΊ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Ρ ΠΎΠ±ΡΠ΅ΠΊΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΏΠΎΠ»Π°Π³Π°ΡΡ, ΡΡΠΎ ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π²ΠΊΠ»ΡΡΠ°Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Ρ ΡΠ°Π½ΡΡΠΈΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΈ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΡ.
ΠΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² β Π΄Π»Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, vector<int>, set<string>). Π ΡΠ»ΡΡΠ°Π΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ, Π΅ΡΠ»ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π²Π»Π°Π΄Π΅Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ, Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΠΎ Π»ΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΡΠ°Π»ΡΠ½ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ ΡΠΎ ΡΡΠ΅ΡΡΠΈΠΊΠΎΠΌ ΡΡΡΠ»ΠΎΠΊ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, list<shared_ptr<Widget> >); Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΎΠ±ΡΡΠ½ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, list<Widget*>) ΠΈΠ»ΠΈ ΠΈΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌ β ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, list<vector<Widget>::iterator>).
ΠΡΠΈΠΌΠ΅ΡΡΠΡΠΈΠΌΠ΅Ρ 1. auto_ptr. ΠΠ±ΡΠ΅ΠΊΡΡ auto_ptr<T> Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ-Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΈΠ·-Π·Π° ΡΠ²ΠΎΠ΅ΠΉ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π²Π»Π°Π΄Π΅Π½ΠΈΡ ΠΏΡΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² auto_ptr (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, vector<auto_ptr<int> >) Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. ΠΠΎ Π΄Π°ΠΆΠ΅ Π² ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠΈΡΠΈΡΠ΅ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ β Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΡΠ°Π»ΡΠ½ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ shared_ptr.