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

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

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

Π’ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ прСдставлСнии ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ rope рСализуСтся Π² Π²ΠΈΠ΄Π΅ Π΄Π΅Ρ€Π΅Π²Π° подстрок с подсчСтом ссылок, ΠΏΡ€ΠΈ этом каТдая строка хранится Π² Π²ΠΈΠ΄Π΅ массива char. Одна ΠΈΠ· интСрСсных особСнностСй интСрфСйса rope Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ begin ΠΈ end всСгда Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Ρ‚ΠΈΠΏ const_iterator. Π­Ρ‚ΠΎ сдСлано для прСдотвращСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΡ… ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ символы. Π’Π°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ обходятся слишком Π΄ΠΎΡ€ΠΎΠ³ΠΎ. ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ rope ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с тСкстом Π² Ρ†Π΅Π»ΠΎΠΌ ΠΈΠ»ΠΈ большими Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ (присваиваниС, конкатСнация ΠΈ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ подстроки); ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ символами Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ нСэффСктивно.

β€’ Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ нСстандартныС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Ρ‹. НСкоторыС классы Ρ„ΡƒΠ½ΠΊΡ‚ΠΎΡ€ΠΎΠ² ΠΈΠ· исходной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ HP STL Π½Π΅ вошли Π² Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ C++. ΠžΠΏΡ‹Ρ‚Π½Ρ‹ΠΌ мастСрам старой ΡˆΠΊΠΎΠ»Ρ‹ большС всСго Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ‚ΠΎΡ€ΠΎΠ² select1st ΠΈ select2nd, Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ map ΠΈ multimap. Π€ΡƒΠ½ΠΊΡ‚ΠΎΡ€ select1st Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° pair, Π° Ρ„ΡƒΠ½ΠΊΡ‚ΠΎΡ€ select2nd Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° pair. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования этих нСстандартных шаблонов классов Ρ„ΡƒΠ½ΠΊΡ‚ΠΎΡ€ΠΎΠ²:

map<int, string> m;

…

// Π’Ρ‹Π²ΠΎΠ΄ всСх ΠΊΠ»ΡŽΡ‡Π΅ΠΉ map Π² cout

transform(m.begin(), m.end(),

 ostream_iterator<int>(cout, "\n"),

 select1st<map<int, string>::value_type>());

// Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΈ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² Π½Π΅Π³ΠΎ

// всС ассоциированныС значСния ΠΈΠ· map

vector<string> v;

transform(m.begin(), m.end(), back_inserter(v),

 select2nd<map<int, string>::value_type>());

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ„ΡƒΠ½ΠΊΡ‚ΠΎΡ€Ρ‹ select1st ΠΈ select2nd ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ использованиС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Π² ситуациях, Π³Π΄Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ приходится ΠΏΠΈΡΠ°Ρ‚ΡŒ собствСнныС Ρ†ΠΈΠΊΠ»Ρ‹ (см. совСт 43). Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, вслСдствиС нСстандартности Ρ„ΡƒΠ½ΠΊΡ‚ΠΎΡ€ΠΎΠ² вас ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Π²ΠΈΠ½ΠΈΡ‚ΡŒ Π² написании нСпСрСносимого ΠΈ Π²Π΄ΠΎΠ±Π°Π²ΠΎΠΊ ΠΏΠ»ΠΎΡ…ΠΎ сопровоТдаСмого ΠΊΠΎΠ΄Π° (см. совСт 47).

Настоящих Ρ„Π°Π½Π°Ρ‚ΠΎΠ² STL это нисколько Π½Π΅ Π²ΠΎΠ»Π½ΡƒΠ΅Ρ‚. Они ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ отсутствиС select1st ΠΈ select2nd Π² Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π΅ само ΠΏΠΎ сСбС являСтся Π²ΠΎΠΏΠΈΡŽΡ‰Π΅ΠΉ Π½Π΅ΡΠΏΡ€Π°Π²Π΅Π΄Π»ΠΈΠ²ΠΎΡΡ‚ΡŒΡŽ.

К числу нСстандартных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, входящих Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ STL, Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ identity, project1st, project2nd, compose1 ΠΈ compose2. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π½ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π½Π° сайтС, хотя ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования compose2 приводился Π½Π° с. 172 настоящСй ΠΊΠ½ΠΈΠ³ΠΈ. НадСюсь, я ΡƒΠ±Π΅Π΄ΠΈΠ» вас Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ посСщСниС web-сайта SGI принСсСт Π½Π΅ΡΠΎΠΌΠ½Π΅Π½Π½ΡƒΡŽ ΠΏΠΎΠ»ΡŒΠ·Ρƒ.

РСализация Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΎΡ‚ SGI Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ STL. ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΡΡ‚Π°Π²ΠΈΠ»Π°ΡΡŒ Ρ†Π΅Π»ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΠ»Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ C++ Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², унаслСдованных ΠΈΠ· C (прСдполагаСтся, Ρ‡Ρ‚ΠΎ Ρƒ вас Π² распоряТСнии ΡƒΠΆΠ΅ имССтся стандартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° C). По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ с сайта SGI Ρ‚Π°ΠΊΠΆΠ΅ стоит ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° C++. Как слСдуСт ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ, эта рСализация Ρ…ΠΎΡ€ΠΎΡˆΠΎ интСгрируСтся с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ STL ΠΎΡ‚ SGI, Π½ΠΎ ΠΏΡ€ΠΈ этом ΠΏΠΎ Π±Ρ‹ΡΡ‚Ρ€ΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ ΠΎΠ½Π° прСвосходит ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, поставляСмыС с компиляторами C++.

Π‘Π°ΠΉΡ‚ STLport

Главная ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ STLport Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ эта модифицированная вСрсия Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ STL ΠΎΡ‚ SGI (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈ Ρ‚. Π΄.) Π±Ρ‹Π»Π° пСрСнСсСна Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ Π½Π° 20 компиляторов. STLport, ΠΊΠ°ΠΊ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° SGI, распространяСтся бСсплатно. Если ваш ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ сразу Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…, Π²Ρ‹ ΠΈΠ·Π±Π°Π²ΠΈΡ‚Π΅ сСбя ΠΎΡ‚ мноТСства Ρ…Π»ΠΎΠΏΠΎΡ‚, Ссли Π²ΠΎΠ·ΡŒΠΌΠ΅Ρ‚Π΅ Π·Π° основу ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ STLport ΠΈ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ со всСми компиляторами.

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΊΠΎΠ΄Π° SGI Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ STLport связано с ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ΠΌ пСрСносимости, ΠΎΠ΄Π½Π°ΠΊΠΎ STLport являСтся СдинствСнной извСстной ΠΌΠ½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ прСдусмотрСн Β«ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌΒ» для диагностики случаСв Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ использования STL β€” ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ…, Π½ΠΎ приводящих ΠΊ нСпрСдсказуСмым послСдствиям Π²ΠΎ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. НапримСр, Π² совСтС 30 распространСнная ошибка записи Π·Π° ΠΊΠΎΠ½Ρ†ΠΎΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° поясняСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ:

int transmogrify(int Ρ…); // Ѐункция вычисляСт Π½Π΅ΠΊΠΎΠ΅ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

                         // ΠΏΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρƒ Ρ…

vector<int> values;

… // Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° values Π΄Π°Π½Π½Ρ‹ΠΌΠΈ

vector<int> results;

transform(values.begin(), // ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° записи Π·Π° ΠΊΠΎΠ½Ρ†ΠΎΠΌ results!

 values.end(), results.end, transmogrify);

Π­Ρ‚ΠΎΡ‚ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ компилируСтся, Π½ΠΎ Π²ΠΎ врСмя выполнСния Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ нСпрСдсказуСмо. Если Π²Π°ΠΌ ΠΏΠΎΠ²Π΅Π·Π΅Ρ‚, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ transform, ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ элСмСнтарной. Π“ΠΎΡ€Π°Π·Π΄ΠΎ Ρ…ΡƒΠΆΠ΅, Ссли Π²Ρ‹Π·ΠΎΠ² transform испортит Π΄Π°Π½Π½Ρ‹Π΅ Π³Π΄Π΅-Ρ‚ΠΎ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ мСстС адрСсного пространства, Π½ΠΎ это обнаруТится лишь ΠΏΠΎΠ·Π΄Π½Π΅Π΅. Π’ этом случаС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ ΠΏΠΎΡ€Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… становится Π·Π°Π΄Π°Ρ‡Π΅ΠΉ β€” ΠΊΠ°ΠΊ Π±Ρ‹ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒΡΡ? β€” вСсьма Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ.

ΠžΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ 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 Π³ΠΎΠ΄Ρƒ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»ΡΡ процСсс, ΠΏΡ€ΠΈΠ²Π΅Π΄ΡˆΠΈΠΉ ΠΊ появлСнию ΠœΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½ΠΎΠ³ΠΎ стандарта C++. МногиС участники Π±Ρ‹Π»ΠΈ Ρ€Π°Π·ΠΎΡ‡Π°Ρ€ΠΎΠ²Π°Π½Ρ‹ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ возмоТности, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ выступали, Π½Π΅ ΠΏΡ€ΠΎΡˆΠ»ΠΈ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π±ΠΎΡ€. НСкоторыС ΠΈΠ· этих участников Π±Ρ‹Π»ΠΈ Ρ‡Π»Π΅Π½Π°ΠΌΠΈ самого ΠšΠΎΠΌΠΈΡ‚Π΅Ρ‚Π°, поэтому ΠΎΠ½ΠΈ Ρ€Π΅ΡˆΠΈΠ»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ основу для дополнСния стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π²ΠΎ врСмя Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΊΡ€ΡƒΠ³Π° стандартизации. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΈΡ… усилий стал сайт Boost, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΠΏΡ€ΠΈΠ·Π²Π°Π½ Β«ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ бСсплатныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ C++. ОсновноС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ удСляСтся пСрСносимым Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Ρƒ C++Β». Π—Π° этой Ρ†Π΅Π»ΡŒΡŽ кроСтся ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠΎΡ‚ΠΈΠ²:

По ΠΌΠ΅Ρ€Π΅ Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Β«ΠΏΠΎΠ²ΡΠ΅Π΄Π½Π΅Π²Π½ΡƒΡŽ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒΒ», возрастаСт Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ Π΅Π΅ для Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΉ стандартизации. ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π° сайт Boost.org являСтся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· способов создания «повсСднСвной практики»…

Π˜Π½Π°Ρ‡Π΅ говоря, Boost прСдлагаСтся Π² качСствС ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ°, ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠ»Π΅Π²Π΅Π»Ρ‹ ΠΎΡ‚ Π·Π΅Ρ€Π΅Π½ Π² области ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ C++. Π’ΠΏΠΎΠ»Π½Π΅ достойная миссия, Π·Π°ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‰Π°Ρ нашСй благодарности.

Π’Π°ΠΊΠΆΠ΅ стоит ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΡƒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, находящихся Π½Π° сайтС 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 Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ «ссылку Π½Π° ссылку», Π½ΠΎ Π² C++ такая конструкция Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½Π° (Π² настоящСС врСмя ΠšΠΎΠΌΠΈΡ‚Π΅Ρ‚ ΠΏΠΎ стандартизации рассматриваСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹). ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ «ссылки Π½Π° ссылку»: