Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ использованиС STLΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 66

Автор Π‘ΠΊΠΎΡ‚Ρ‚ ΠœΠ΅ΠΉΠ΅Ρ€Ρ

vector<Widget> vw(begin, end); // ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Widget

                               // ΠΈΠ· cin Π² vw (см. совСт 6)

                               // Π½Π΅ компилируСтся Π² MSVC4-6!

list<Widget> lw;

lw.assign(vw.rbegin(), vw.rend()); // ΠŸΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ lw содСрТимоС vw

                                   // (Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС);

                                   // Π½Π΅ компилируСтся Π² MSVC4-6!

SpeciΠ°lContainer<Widget> scw;

scw.insert(scw.end(), lw.begin(), lw.end()); // Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠ½Π΅Ρ† scw

                                             // копию ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Widget ΠΈΠ· lw;

                                             // Π½Π΅ компилируСтся Π² MSVC4-6!

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ссли Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ Π² срСдС MSVC4-6? Π­Ρ‚ΠΎ зависит ΠΎΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ вСрсии MSVC ΠΈ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ Π»ΠΈ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ STL, ΠΏΠΎΡΡ‚Π°Π²Π»ΡΠ΅ΠΌΡƒΡŽ вмСстС с компилятором.

ΠžΠ±Ρ…ΠΎΠ΄Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для MSVC4-5

Π•Ρ‰Π΅ Ρ€Π°Π· посмотрим Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ компилируСтся для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ STL ΠΈΠ· поставки MSVC4-6:

vector<Widget> vw(begin, end); // ΠžΡ‚Π²Π΅Ρ€Π³Π°Π΅Ρ‚ΡΡ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ STL

                               // ΠΈΠ· поставки MSVC4-6

list<Widget> lw;

…

lw.assign(vw.rbegin(), vw.rend()); // Π’ΠΎ ΠΆΠ΅


SpeciΠ°lContainer<Widget> scw;

…

scw.insert(scw.end(), lw.begin(), lw.end()); // Π’ΠΎ ΠΆΠ΅

НСсмотря Π½Π° внСшниС различия, Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΎΡ‚Π²Π΅Ρ€Π³Π°ΡŽΡ‚ΡΡ компилятором ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅: ΠΈΠ·-Π·Π° отсутствия шаблонов Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ класса Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ STL. БоотвСтствСнно ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π²ΠΎ всСх случаях оказываСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅: Π·Π°ΠΌΠ΅Π½Π° Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ copy с ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ вставки (см. совСт 30). НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΎΠ±Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для всСх ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Ρ€Π°Π½Π΅Π΅:

istream_iterator<Widget> begin(cin), end;

vector<Widget> vw(begin, end); //Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ vw конструктором

copy(begin, end, back_inserter(vw)); // ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ

                                     // Π² Π½Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Widget ΠΈΠ· cin

list<Widget> lw;

…

lw.clear();                  // Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ· lw старыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹;

copy(vw.rbegin(), vw.rend(), // ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠ· vw

 back_inserter(lw));         //(Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС)

SpecialContainer<Widget> scw;

copy(lw.begin(), lw.end(),  // Π‘ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Widget

 inserter(scw, scw.end())); // ΠΈΠ· lw Π² ΠΊΠΎΠ½Π΅Ρ† scw

Π― Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эти ΠΎΠ±Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ, входящСй Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ поставки MSVC4-5. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ ΠΈ Π½Π΅ Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ эти Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±Ρ…ΠΎΠ΄Π½Ρ‹ΠΌΠΈ. Как ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² совСтС 5, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ copy ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда уступаСт ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, поэтому ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ прСдставится Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ STL Π΄ΠΎ вСрсии с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ шаблонов Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ класса, ΠΎΡ‚ΠΊΠ°ΠΆΠΈΡ‚Π΅ΡΡŒ ΠΎΡ‚ использования copy Π² Ρ‚Π΅Ρ… мСстах, Π³Π΄Π΅ слСдовало Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠžΠ±Ρ…ΠΎΠ΄Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для MSVC6

ΠžΠ±Ρ…ΠΎΠ΄Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΈ для MSVC6, Π½ΠΎ Π² этом случаС сущСствуСт ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρ‹ MSVC4-5 Π½Π΅ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ шаблонов Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ класса, поэтому отсутствиС этих шаблонов Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ STL нСсущСствСнно. Π’ MSVC6 Π΄Π΅Π»ΠΎ обстоит ΠΈΠ½Π°Ρ‡Π΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ компилятор этой срСды ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ класса. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ СстСствСнноС ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ STL ΠΈΠ· поставки MSVC6 Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ с шаблонами Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ классов, прСдписанными Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ΠΎΠΌ.

Π’ совСтС 50 ΡƒΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ΡΡ свободно распространяСмыС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ STL ΠΎΡ‚ SGI ΠΈ STLport; Π² списках ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… компиляторов ΠΎΠ±Π΅ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ упоминаСтся MSVC6. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ приобрСсти Π½ΠΎΠ²Π΅ΠΉΡˆΡƒΡŽ MSVC-ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ STL ΠΎΡ‚ Dinkumware. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· этих Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Π΅ΡΡ‚ΡŒ свои достоинства ΠΈ нСдостатки.

Π Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ SGI ΠΈ STLport Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ΡΡ бСсплатно, поэтому какая-Π»ΠΈΠ±ΠΎ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π² этих случаях попросту отсутствуСт. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ SGI ΠΈ STLport рассчитаны Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ компиляторами, Π²Π°ΠΌ придСтся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΈΡ… для обСспСчСния максимального быстродСйствия Π² MSVC6. Π’ частности, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ шаблонов Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ классов β€” ΠΈΠ·-Π·Π° совмСстимости с большим количСством Ρ€Π°Π·Π½Ρ‹Ρ… компиляторов Π² SGI ΠΈ/ΠΈΠ»ΠΈ STLport эта ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‚Π°ΠΊΠΆΠ΅ придСтся ΠΏΠΎΠ·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ΅ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ MSVC6 (особСнно DLL), ΠΏΡ€ΠΎΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° использованиСм ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… вСрсий для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ Ρ‚. Π΄.

Если ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ вас ΠΏΡƒΠ³Π°ΡŽΡ‚ ΠΈΠ»ΠΈ Π²Ρ‹ Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΡƒΠ΅Ρ‚Π΅ΡΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠΌ «бСсплатныС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ обходятся слишком Π΄ΠΎΡ€ΠΎΠ³ΠΎΒ», рассмотритС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ STL для MSVC6 ΠΎΡ‚ Dinkumware. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ с расчСтом Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ простоту Π·Π°ΠΌΠ΅Π½Ρ‹ ΠΈ Π½Π° соотвСтствиС Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Ρƒ. РСализация STL ΠΈΠ· MSVC6 Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π»Π°ΡΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ Π² Dinkumware, поэтому Π²ΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ новая рСализация STL Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ замСняСт ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π». Π—Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ рСализациях STL ΠΎΡ‚ Dunkumware ΠΎΠ±Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° сайт ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ http://www.dunkumware.com.

НСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π½Π° ΠΊΠ°ΠΊΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Ρ‹ остановитС свой Π²Ρ‹Π±ΠΎΡ€, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π½Π΅Ρ‡Ρ‚ΠΎ большСС, Ρ‡Π΅ΠΌ STL с шаблонами Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ классов. Π’ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… рСализациях Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π΅ΡˆΠ΅Π½Ρ‹ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ соотвСтствия Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Ρƒ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… областях β€” скаТСм, отсутствиС объявлСния push_back Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ string. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π² вашСм распоряТСнии окаТутся ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ STL, Π² Ρ‚ΠΎΠΌ числС Ρ…ΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ (см. совСт 25) ΠΈ односвязныС списки (ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ slist). Π Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ SGI ΠΈ STLport Ρ‚Π°ΠΊΠΆΠ΅ содСрТат мноТСство нСстандартных классов Ρ„ΡƒΠ½ΠΊΡ‚ΠΎΡ€ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ select1st ΠΈ select2nd (см. совСт 50).

Но Π΄Π°ΠΆΠ΅ Ссли Π²Ρ‹ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ STL ΠΈΠ· поставки MSVC6, сайт Dunkumware всС ΠΆΠ΅ стоит ΠΏΠΎΡΠ΅Ρ‚ΠΈΡ‚ΡŒ. На Π½Π΅ΠΌ пСрСчислСны извСстныС ошибки Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ MSVC6 ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ для сокращСния Π΅Π΅ нСдостатков. НС стоит ΠΈ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ β€” Π΄Π΅Π»ΠΎ вСсьма рискованноС. Если Ρƒ вас Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Π½Π΅ Π²ΠΈΠ½ΠΈΡ‚Π΅ Π² Π½ΠΈΡ… мСня.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ

1

Π’ срСдС программистов Π΄Π°Π½Π½Ρ‹ΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ (Π°Π½Π³Π». mutex) встрСчаСтся Ρ‚Π°ΠΊΠΆΠ΅ Π² Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ «мутСкс». β€” ΠŸΡ€ΠΈΠΌΠ΅Ρ‡. Ρ€Π΅Π΄.

2

Π‘Ρ‚Ρ€ΠΎΠ³ΠΎ говоря, Π½Π΅ всС 24 пСрСстановки равновСроятны, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ 1/24 Π½Π΅ совсСм Ρ‚ΠΎΡ‡Π½Π°. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, остаСтся бСсспорный Ρ„Π°ΠΊΡ‚: ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ 24 Ρ€Π°Π·Π½Ρ‹Π΅ пСрСстановки, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ ΠΈΠ· Π½ΠΈΡ….

3

Π’Π΅Ρ€ΠΌΠΈΠ½ употрСбляСтся Π² статистикС. β€” ΠŸΡ€ΠΈΠΌΠ΅Ρ‡. Ρ€Π΅Π΄.

4

Π“Π°ΠΌΠΌΠ° Π­., Π₯Π΅Π»ΠΌ Π ., ДТонсон Π ., ВлиссидСс Π”ΠΆ. Β«ΠŸΡ€ΠΈΠ΅ΠΌΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ проСктирования. ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ проСктирования» β€” БПб.: ΠŸΠΈΡ‚Π΅Ρ€, 2001.

5

Π‘ΠΌ. ΡΡ‚Π°Ρ‚ΡŒΡŽ АлСксандрСску A. (Andrei Alexandrescu) Π² майском Π½ΠΎΠΌΠ΅Ρ€Π΅ Β«C++ ReportΒ» Π·Π° 2000 Π³. [19].

6

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π² шаблонС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ use_facet ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ шаблона присутствуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚ΠΈΠΏΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния, Π½ΠΎ Π½Π΅ Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ…. ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Π½Π΅ΠΌΡƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ языковоС срСдство, Π½Π°Π·Ρ‹Π²Π°-СмоСявяьш Π·Π°Π΄Π°Π½ΠΈΠ΅ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² шаблона, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ поддСрТиваСтся Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ компиляторами C++. Если ваш компилятор ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ ΠΊ ΠΈΡ… числу, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π°Π²Ρ‚ΠΎΡ€Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ прСдусмотрСли ΠΎΠ±Ρ…ΠΎΠ΄Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ use_facet Π΄Ρ€ΡƒΠ³ΠΈΠΌ способом.