ΠΠΎΠΊΠ»ΠΎΠ½Π½ΠΈΠΊΠΈ STL ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠ΅Π½ΡΡ Π±ΠΎΠ³Π°ΡΡΠΉ Π°ΡΡΠΎΡΡΠΈΠΌΠ΅Π½Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π°. Π ΡΡΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°Ρ Π·Π°Π½ΠΎΠ²ΠΎ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ, Π·Π°Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ Π² ΠΎΡΠ½ΠΎΠ²Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ Π°Π΄Π°ΠΏΡΠ΅ΡΠΎΠ² STL, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ΅Π³ΠΎ Π±ΡΠ»ΠΈ ΡΠ½ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ, ΡΠ½ΠΈΠΆΠ°ΡΡΠΈΠ΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΎΡΠΎΠ². Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ bind2nd Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ mem_fun ΠΈ mem_fun_ref (ΡΠΌ. ΡΠΎΠ²Π΅Ρ 41) Π΄Π»Ρ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° Π²ΡΡΡΠ½ΡΠ΅ΡΡΡ, ΡΡΠΎ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ ΠΊΠΎΠ΄, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ not1 ΠΈ not2 Ρ ptr_fun ΠΈ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ, ΠΏΠΎΠ»ΡΡΠ°ΡΡΠ΅ΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅. ΠΡΠΈΡΠΈΠ½Π° Π² ΠΎΠ±ΠΎΠΈΡ ΡΠ»ΡΡΠ°ΡΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π±Π»ΠΎΠ½Π° ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ STL Π³Π΅Π½Π΅ΡΠΈΡΡΡΡ Β«ΡΡΡΠ»ΠΊΡ Π½Π° ΡΡΡΠ»ΠΊΡΒ», Π½ΠΎ Π² C++ ΡΠ°ΠΊΠ°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Π·Π°ΠΏΡΠ΅ΡΠ΅Π½Π° (Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΠΎΠΌΠΈΡΠ΅Ρ ΠΏΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π‘ΡΠ°Π½Π΄Π°ΡΡ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ). ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Β«ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΡΡΠ»ΠΊΡΒ»:
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, Π²ΡΠ½ΡΠΆΠ΄Π΅Π½Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ Π½Π° C++, Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅ ΡΠ°ΠΉΡ Boost. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ Boost Π²Π°ΠΆΠ½Ρ, Π½ΠΎ ΠΎΠ½ΠΈ ΡΠΎΡΡΠ°Π²Π»ΡΡΡ Π»ΠΈΡΡ ΠΌΠ°Π»ΡΡ ΡΠ°ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, Π½Π°Ρ ΠΎΠ΄ΡΡΠ΅ΠΉΡΡ Π½Π° ΡΠ°ΠΉΡΠ΅.
ΠΠΈΡΠ΅ΡΠ°ΡΡΡΠ°
Π ΠΊΠ½ΠΈΠ³Π΅ ΠΈΠΌΠ΅ΡΡΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΉ, ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ Π½ΠΈΠΆΠ΅, Ρ ΠΎΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ Π»ΠΈΡΡ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Β«ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠ½ΠΎΡΡΠΈΒ». ΠΡΠ±Π»ΠΈΠΊΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π² ΠΊΠ½ΠΈΠ³Π΅ Π½Π΅ ΡΠΏΠΎΠΌΠΈΠ½Π°ΡΡΡΡ, ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Ρ ΠΊΡΡΠΆΠΊΠΎΠΌ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΈΡΡΡ.
ΠΠ΄ΡΠ΅ΡΠ° URL Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠΎΠΌΠ½Π΅Π²Π°Π»ΡΡ, ΡΡΠΎΠΈΡ Π»ΠΈ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΈΡ Π² ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅. Π ΠΈΡΠΎΠ³Π΅ Ρ ΡΠ΅ΡΠΈΠ», ΡΡΠΎ Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ URL ΡΡΠ°Π½Π΅Ρ Π½Π΅Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ, ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π΅ ΠΌΠ΅ΡΡΠΎΠ½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ Π½Π°ΠΉΡΠΈ Π΅Π³ΠΎ ΠΏΠΎ Π½ΠΎΠ²ΠΎΠΌΡ Π°Π΄ΡΠ΅ΡΡ.
ΠΠ½ΠΈΠ³ΠΈ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ ΠΌΠ½ΠΎΠΉ
[1] Scott Meyers, Β«Effective C++: 50 Specific Ways to Improve Your Programs and DesignsΒ» (second edition), Addison-Wesley, 1998, ISBN 0-201-92488-9. Π’Π°ΠΊΠΆΠ΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π½Π° ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ΅ Β«Effective C++Β» (ΡΠΌ. Π΄Π°Π»Π΅Π΅).
[2] Scott Meyers, Β«More Effective C++: 35 New Ways to Improve Your Programs Π°Ρd DesignsΒ» (second edition), Addison-Wesley, 1996, ISBN 0-201-63371-X. Π’Π°ΠΊΠΆΠ΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π½Π° ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ΅ Β«Effective C++Β» (ΡΠΌ. Π΄Π°Π»Π΅Π΅).
β’ Scott Meyers, Β«Effective C++ 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.microsoft.com/Mind/1099/browsing/browsing.htm.
ΠΠ½ΠΈΠ³ΠΈ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π°Π²ΡΠΎΡΠ°ΠΌΠΈ
[3] Nicolai Π. Josuttis, Β«The C++ Standard Library: A Tutorial and ReferenceΒ», Addison-Wesley, 1999, ISBN 0-201-37926-0. ΠΠ΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΠ°Ρ ΠΊΠ½ΠΈΠ³Π°, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° C++.
[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 β C++Β», ISO/IEC 14882:1998(E), 1998. ΠΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ C++. Π Π°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠΈΡΠ΅ΡΠΎΠΌ 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. ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π°Π²ΡΠΎΡΠΈΡΠ΅ΡΠ½ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ ΠΈΠ΄ΠΈΠΎΠΌΠ°ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ C++ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°ΡΡ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ ΠΈΠ΄ΠΈΠΎΠΌΡ ΠΈ Π΄Π΅ΡΠΆΠ°ΡΡ ΠΏΠΎΠ΄ ΡΡΠΊΠΎΠΉ ΡΡΡ ΠΊΠ½ΠΈΠ³Ρ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊ.
[7] Bjarne Stroustrup, Β«The C++ Programming LanguageΒ» (third edition), Addison-Wesley, 1997, ISBN 0-201-88954-4. ΠΠ΄ΠΈΠΎΠΌΠ° Β«Π·Π°Ρ Π²Π°ΡΠ° ΡΠ΅ΡΡΡΡΠΎΠ² ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈΒ», ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΠΌΠ°Ρ Π² ΡΠΎΠ²Π΅ΡΠ΅ 12, ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ 14.4.1 ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ, Π° ΠΊΠΎΠ΄ ΠΈΠ· ΡΠΎΠ²Π΅ΡΠ° 36 ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π½Π° Ρ. 530.
[8] Herb Sutter, Β«Exceptional C++: 47 Engineering Puzzles, Programming Problems and SolutionsΒ», Addison-Wesley, 2000, ISBN 0-201-61562-2. ΠΠΎΡΡΠΎΠΉΠ½ΠΎΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΠΌΠΎΠ΅ΠΉ ΡΠ΅ΡΠΈΠΈ Β«Effectiveβ¦Β». Π― Π±Ρ Π²ΡΡΠΎΠΊΠΎ ΠΎΡΠ΅Π½ΠΈΠ» ΡΡΡ ΠΊΠ½ΠΈΠ³Ρ Π² Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π±Ρ Π₯Π΅ΡΠ± Π½Π΅ ΠΏΠΎΠΏΡΠΎΡΠΈΠ» ΠΌΠ΅Π½Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΊ Π½Π΅ΠΉ ΠΏΡΠ΅Π΄ΠΈΡΠ»ΠΎΠ²ΠΈΠ΅.
[9] Herb Sutter, Β«More Exceptional C++: 40 More Engineering Puzzles, Programming Problems and SolutionsΒ», Addison-Wesley, 2001, ISBN 0-201-70434-X. Π‘ΡΠ΄Ρ ΠΏΠΎ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΡ Ρ Π²ΠΈΠ΄Π΅Π», ΡΡΠ° ΠΊΠ½ΠΈΠ³Π° Π½ΠΈΡΡΡΡ Π½Π΅ Ρ ΡΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ.
[10] Dov Bulka, David Mayhew, Β«Efficient C++: Performance Programming TechniquesΒ», Addison-Wesley, 2000, ISBN 0-201-37950-3. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ Π»ΡΡΡΠ°Ρ ΠΊΠ½ΠΈΠ³Π°, ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π½Π°Ρ Π²ΠΎΠΏΡΠΎΡΠ°ΠΌ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ Π² C++.
[11] Matt Austern, Β«How to Do Case-Insensitive String ComparisonΒ», C++ Report, ΠΌΠ°ΠΉ 2000 Π³. ΠΡΠ° ΡΡΠ°ΡΡΡ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»Π΅Π·Π½Π°, ΡΡΠΎ ΠΎΠ½Π° Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π Π½Π°ΡΡΠΎΡΡΠ΅ΠΉ ΠΊΠ½ΠΈΠ³ΠΈ.
[12] Herb Sutter, Β«When Is a Container Not A Container?Β», C++ Report, ΠΌΠ°ΠΉ 1999 Π³. Π‘ΡΠ°ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½Π° ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ http://www.gotw.ca/publications/mill09.htm. ΠΠ°ΡΠ΅ΡΠΈΠ°Π» ΠΏΠ΅ΡΠ΅ΡΠΌΠΎΡΡΠ΅Π½ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ Π² ΡΠΎΠ²Π΅ΡΠ΅ 6 ΠΊΠ½ΠΈΠ³ΠΈ Β«More Exceptional C++Β» [9].
[13] Herb Sutter, Β«Standard Library News: sets and mapsΒ», C++ Report, ΠΎΠΊΡΡΠ±ΡΡ 1999Π³. Π‘ΡΠ°ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½Π° ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ http://www.gotw.ca/publications/mill11.htm. ΠΠ°ΡΠ΅ΡΠΈΠ°Π» ΠΏΠ΅ΡΠ΅ΡΠΌΠΎΡΡΠ΅Π½ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ Π² ΡΠΎΠ²Π΅ΡΠ΅ 8 ΠΊΠ½ΠΈΠ³ΠΈ Β«More Exceptional C++Β» [9].
[14] Nicolai M. Josuttis, Β«Predicates vs. Function ObjectsΒ», C++ Report, ΠΈΡΠ½Ρ 2000 Π³.
[15] Matt Austern, Β«Why You Shouldn't Use set β and What to Use InsteadΒ», C++ Report, Π°ΠΏΡΠ΅Π»Ρ 2000 Π³.
[16] P.J. Plauger, Β«HashTablesΒ», C/C++ Users Journal, Π½ΠΎΡΠ±ΡΡ 1999 Π³. Π ΡΡΠ°ΡΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Dinkumware ΠΊ Ρ ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌ (ΡΠΌ. ΡΠΎΠ²Π΅Ρ 25) ΠΈ Π΅Π³ΠΎ ΠΎΡΠ»ΠΈΡΠΈΡ ΠΎΡ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ.
[17] Jack Reeves, Β«STL Gotcha'sΒ», C++ Report, ΡΠ½Π²Π°ΡΡ 1997 Π³. Π‘ΡΠ°ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½Π° ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ http://www.bleading-edge.com/Publications/C++Report/v9701/abstract.htm.
[18] Jack Reeves, Β«Using Standard string in the Real World, Part 2Β», C++ Report, ΡΠ½Π²Π°ΡΡ 1999 Π³. Π‘ΡΠ°ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½Π° ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ http://www.bleading-edge.com/Publications/C++Report/v9901/abstract.htm.
[19] Andrei Alexandrescu, Β«Traits: The if-then-else of TypesΒ», C++ Report, Π°ΠΏΡΠ΅Π»Ρ 2000 Π³. Π‘ΡΠ°ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½Π° ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ http://www.creport.com/html/from_pages/view_recent_articles_c.cfm?ArticleID=402.
[20] Herb Sutter, Β«Optimizations That Aren't (In a Multithreaded World)Β», C/C++ Users Journal, ΠΈΡΠ½Ρ 1999 Π³. Π‘ΡΠ°ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½Π° ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ http://www.gotw.ca/publications/optimizations.htm. ΠΠ°ΡΠ΅ΡΠΈΠ°Π» ΠΏΠ΅ΡΠ΅ΡΠΌΠΎΡΡΠ΅Π½ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ Π² ΡΠΎΠ²Π΅ΡΠ΅ 16 ΠΊΠ½ΠΈΠ³ΠΈ Β«More Exceptional C++Β» [9].
[21] Web-ΡΠ°ΠΉΡ SGI STL, http://www.sgi.com/tech/stl. Π ΡΠΎΠ²Π΅ΡΠ΅ 50 ΠΊΡΠ°ΡΠΊΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠ°. Π‘ΡΡΠ°Π½ΠΈΡΠ°, ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π½Π°Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ²ΠΎΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² STL (Π²Π·ΡΡΠ°Ρ Π·Π° ΠΎΡΠ½ΠΎΠ²Ρ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΠΎΠ²Π΅ΡΠ° 12), Π½Π°ΠΊΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ http://www.sgi.com/tech/stl/thread_safety.html.
[22] Web-ΡΠ°ΠΉΡ Boost, http://www.boost.org/. Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°ΠΉΡΠ° ΠΊΡΠ°ΡΠΊΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² ΡΠΎΠ²Π΅ΡΠ΅ 50.
[23] Nicolai M. Josuttis, Β«User-Defined AllocatorΒ», http://www.josuttis.com/cppcode/allocator.html. Π‘ΡΡΠ°Π½ΠΈΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΡ ΡΠ°ΠΉΡΠ°, ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π²ΠΎΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ ΠΠΆΠΎΡΠ°ΡΡΠΈΡΠ° ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ C++ [3].
[24] Matt Austern, Β«The Standard Librarim: What Are Allocators Good For?Β», ΡΠΎΡΡΠΌ ΡΠΊΡΠΏΠ΅ΡΡΠΎΠ² C/C++ Users Journal (ΡΠ΅ΡΠ΅Π²ΠΎΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΠΆΡΡΠ½Π°Π»Ρ), Π½ΠΎΡΠ±ΡΡ 2000 Π³., http://www.cuj.com/experts/1812/austern.htm. ΠΠ°ΠΉΡΠΈ ΡΠΎΠ»ΠΊΠΎΠ²ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅Π»ΡΡ ΠΏΠ°ΠΌΡΡΠΈ Π½Π΅Π»Π΅Π³ΠΊΠΎ. Π‘ΡΠ°ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π» ΡΠΎΠ²Π΅ΡΠΎΠ² 10 ΠΈ 11. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π² Π½Π΅ΠΉ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ ΠΏΠ°ΠΌΡΡΠΈ.
[25] Klaus Kreft, Angelika Langer, Β«A Sophisticated Implementation of User-Defined Inserters and ExtractorsΒ», C++ Report, ΡΠ΅Π²ΡΠ°Π»Ρ 2000 Π³.
[26] Leor Zolman, Β«An STL Error Message Decryptor for Visual C++Β», C/C++ Users Journal, ΠΈΡΠ»Ρ 2001 Π³. Π‘ΡΠ°ΡΡΡ ΠΈ ΠΎΠΏΠΈΡΠ°Π½Π½Π°Ρ Π² Π½Π΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ http://www.bdsoft.com/tools/stlfilt.html.
[27] Bjarne Stroustrup, Β«Sixteens Ways to Stack a CatΒ», C++ Report, ΠΎΠΊΡΡΠ±ΡΡ 1990 Π³. Π‘ΡΠ°ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ½Π° ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ http://www.csdn.net/dev/C&C++/Document/Stackcat.pdf.
β’ Herb Sutter, Β«Guru of the Week #74: Uses and Abuses of vectorΒ», ΡΠ΅Π½ΡΡΠ±ΡΡ 2000 Π³. ΠΠ°Π΄Π°ΡΠ° Ρ ΠΏΡΠΈΠ»Π°Π³Π°Π΅ΠΌΡΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π°ΡΠΏΠ΅ΠΊΡΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ vector, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Π² ΡΠ°Π·Π»ΠΈΡΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ ΠΈ Π΅ΠΌΠΊΠΎΡΡΡΡ (ΡΠΌ. ΡΠΎΠ²Π΅Ρ 14). ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π² ΡΡΠ°ΡΡΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π°ΡΡΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΠΏΠ΅ΡΠ΅Π΄ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ Π²ΡΠ·ΠΎΠ²Π°ΠΌΠΈ (ΡΠΌ. ΡΠΎΠ²Π΅Ρ 43).
β’ Matt Austern, Β«The Standard Librarian: Bitsets and Bit Vectors?Β», ΡΠΎΡΡΠΌ ΡΠΊΡΠΏΠ΅ΡΡΠΎΠ² C/C++ Users Journal (ΡΠ΅ΡΠ΅Π²ΠΎΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΠΆΡΡΠ½Π°Π»Ρ), ΠΌΠ°ΠΉ 2001 Π³., http://www.cuj.com/expeits/1905/austern.htm. Π ΡΡΠ°ΡΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ bitset, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡΡΡ Ρ vector<bool>, β ΡΡΠΈ ΡΠ΅ΠΌΡ ΠΊΡΠ°ΡΠΊΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ Π² ΡΠΎΠ²Π΅ΡΠ΅ 18.
ΠΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΊΠΈ
β’ Π‘ΠΏΠΈΡΠΎΠΊ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΠΊ Π² ΠΊΠ½ΠΈΠ³Π΅ Β«Effective C++Β»: http://www.aristeia.com/BookErrata/ec++2e-errata.html.
[28] Π‘ΠΏΠΈΡΠΎΠΊ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΠΊ Π² ΠΊΠ½ΠΈΠ³Π΅ Β«More Effective C++Β»: http://www.aristeia.com/BookErrata/mec++-errata.html.
β’ Π‘ΠΏΠΈΡΠΎΠΊ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΠΊ Π½Π° ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ΅ Β«Effective C++Β»: http://www. aristeia.com/BookErrata/cd1e-errata.html.
[29] ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Β«More Effective C++Β», ΠΎΡΠ½ΠΎΡΡΡΠΈΠ΅ΡΡ ΠΊ auto_ptr: http://www.awl.com/cseng/titles/0-201-63371-X/auto_ptr.html.
ΠΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΡ