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

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

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

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, прСимущСство ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² Ρ€ΠΎΠ»ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Π½Π΅ сводится ΠΊ простому ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡŽ эффСктивности. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ большСй Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΈ компиляции ΠΊΠΎΠ΄Π°. БСсспорно, «настоящиС» Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Ρ‹, Π½ΠΎ Π² области эффСктивного программирования Π² STL ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ часто ΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠΎΠ»Π΅Π·Π½Π΅Π΅.

Π‘ΠΎΠ²Π΅Ρ‚ 47. Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Β«Π½Π΅Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠ³ΠΎΒ» ΠΊΠΎΠ΄Π°

Допустим, имССтся Π²Π΅ΠΊΡ‚ΠΎΡ€ vector<int>. Из этого Π²Π΅ΠΊΡ‚ΠΎΡ€Π° трСбуСтся ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС элСмСнты, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… мСньшС Ρ…, Π½ΠΎ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ элСмСнты, ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ послСднСму Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΡŽ значСния, Π½Π΅ мСньшСго Ρƒ. Π’ Π³ΠΎΠ»ΠΎΠ²Ρƒ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅:

vector<int> v; int Ρ…,Ρƒ;

v.erase(

remove_if(find_if(v.rbegin(),v.rend(),

bind2nd(greater_equal<int>().y)).base(),

v.end(),

bind2nd(less<int>(),x)),

v.end());

ВсСго ΠΎΠ΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΈ Π·Π°Π΄Π°Ρ‡Π° Ρ€Π΅ΡˆΠ΅Π½Π°. ВсС просто ΠΈ прямолинСйно. Никаких ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. ΠŸΡ€Π°Π²Π΄Π°?

НС Π±ΡƒΠ΄Π΅ΠΌ Ρ‚ΠΎΡ€ΠΎΠΏΠΈΡ‚ΡŒΡΡ с Π²Ρ‹Π²ΠΎΠ΄Π°ΠΌΠΈ. Π‘Ρ‡ΠΈΡ‚Π°Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ Π² сопровоТдСнии? «НСт!Β» β€” воскликнСт Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ программистов Π‘++ с уТасом ΠΈ ΠΎΡ‚Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ. Β«Π”Π°!Β» β€” скаТут считанныС Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹ с явным ΡƒΠ΄ΠΎΠ²ΠΎΠ»ΡŒΡΡ‚Π²ΠΈΠ΅ΠΌ. Π’ этом ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. Π’ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ программист считаСт Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ простотой, Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ прСдставляСтся адским Π½Π°Π²Π°ΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ.

Насколько я понимаю, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ бСспокойство ΠΏΠΎ Π΄Π²ΡƒΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΎΠ½ содСрТит слишком ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΎ Ρ‡Π΅ΠΌ ΠΈΠ΄Π΅Ρ‚ Ρ€Π΅Ρ‡ΡŒ, ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ Ρ‚Ρƒ ΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈΠΌΠ΅Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ‹ обозначСниями fn:

V.f1(f2(f3(v.f40.v.f50.f6(f70.y)).f8().v.f90.f6(fl00,x)).v.f90);

Вакая запись выглядит нССстСствСнно услоТнСнной, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΠ· Π½Π΅Π΅ ΡƒΠ±Ρ€Π°Π½Ρ‹ отступы, ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π² исходном ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅. МоТно ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ программистов Π‘++ сочтСт, Ρ‡Ρ‚ΠΎ Π΄Π²Π΅Π½Π°Π΄Ρ†Π°Ρ‚ΡŒ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² дСсяти Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ β€” это ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€. Но программисты с ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… языках Ρ‚ΠΈΠΏΠ° Scheme ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΠ½Π°Ρ‡Π΅. По своСму ΠΎΠΏΡ‹Ρ‚Ρƒ ΠΌΠΎΠ³Ρƒ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ всС программисты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ просматривали этот Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π±Π΅Π· ΠΌΠ°Π»Π΅ΠΉΡˆΠΈΡ… ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ² удивлСния, ΠΈΠΌΠ΅Π»ΠΈ ΠΎΡΠ½ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠΏΡ‹Ρ‚ программирования Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… языках. Π£ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° программистов Π‘++ Ρ‚Π°ΠΊΠΎΠΉ ΠΎΠΏΡ‹Ρ‚ отсутствуСт, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Ссли ваши ΠΊΠΎΠ»Π»Π΅Π³ΠΈ Π½Π΅ ΠΏΡ€ΠΈΠ²Ρ‹ΠΊΠ»ΠΈ ΠΊ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌ влоТСниям Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, конструкции Π²Ρ€ΠΎΠ΄Π΅ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° erase Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΡ… Π² Π·Π°ΠΌΠ΅ΡˆΠ°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ нСдостаток ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ для Π΅Π³ΠΎ понимания Π½ΡƒΠΆΠ½ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π½Π°Ρ‚ΡŒ STL. Π’ Π½Π΅ΠΌ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ ΠΌΠ΅Π½Π΅Π΅ распространСнныС _if-Ρ„ΠΎΡ€ΠΌΡ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² find ΠΈ remove, ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ (см. совСт 26), прСобразования reverse_iterator Π² iterator (см. совСт 28), bind2nd ΠΈ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ΄ΠΈΠΎΠΌΠ° erase-remove (см. совСт 32). ΠžΠΏΡ‹Ρ‚Π½Ρ‹ΠΉ программист STL разбСрСтся Π² этой ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ Π±Π΅Π· особого Ρ‚Ρ€ΡƒΠ΄Π°, Π½ΠΎ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большС Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΡ…, ΠΊΡ‚ΠΎ Π½Π°Π΄ΠΎΠ»Π³ΠΎ задумаСтся Π½Π°Π΄ Π½Π΅ΠΉ. Если ваши ΠΊΠΎΠ»Π»Π΅Π³ΠΈ Π΄Π°Π»Π΅ΠΊΠΎ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΠ»ΠΈΡΡŒ Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ STL, присутствиС erase, remove_if, find_if, base ΠΈ bind2nd Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π²ΠΏΠΎΠ»Π½Π΅ допустимо, Π½ΠΎ Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ваша ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±Ρ‹Π»Π° понятна программисту Π‘++ со срСдним ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ, я Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ эту ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π½Π° нСсколько Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ².

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² (ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ приводятся Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΊΠ½ΠΈΠ³ΠΈ β€” я Π±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠ» ΠΈΡ… ΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ).

typedef vector<int>::iterator VecInter;

// Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ angeBegin ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ элСмСнтом v, большим ΠΈΠ»ΠΈ Ρ€Π°Π²Π½Ρ‹ΠΌ

// послСднСму Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΡŽ Ρƒ. Если Ρ‚Π°ΠΊΠΎΠΉ элСмСнт Π½Π΅ сущСствуСт, rangeBegin

// инициируСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ v.begin()

VeclntIter rangeBegin = find_if(v.rbegin().v.rend(),

bind2nd(greater_equal<int>(),y)).base();

// Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΎΡ‚ rangeBegin Π΄ΠΎ v.end всС элСмСнты со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, мСньшим Ρ…

v.erase(remove_if(rangeBegin.v.end().bind2nd(less<int>().x)),v.end());

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π΄Π°ΠΆΠ΅ этот Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΊΠΎΠ΅-ΠΊΠΎΠ³ΠΎ смутит, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ понимания ΠΈΠ΄ΠΈΠΎΠΌΡ‹ erase-remove, Π½ΠΎ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ справочника ΠΏΠΎ STL (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«The Π‘++ Standard LibraryΒ» [3] ΠΈΠ»ΠΈ web-сайта SGI [21]) ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ программист Π‘++ Π±Π΅Π· особых усилий разбСрСтся, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ происходит Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π² процСссС ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ я Π½Π΅ отказался ΠΎΡ‚ использования Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΈ Π½Π΅ попытался Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΡ… Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ. Π’ совСтС 43 ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ Ρ†ΠΈΠΊΠ»ΠΎΠ², ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π² этом случаС. Основная Ρ†Π΅Π»ΡŒ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² создании ΠΊΠΎΠ΄Π°, понятного ΠΊΠ°ΠΊ для компилятора, Ρ‚Π°ΠΊ ΠΈ для читатСля-Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠ°, ΠΈ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΡ‹ΠΌ быстродСйствиСм. Алгоритмы ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда Π»ΡƒΡ‡ΡˆΠ΅ подходят для достиТСния этой Ρ†Π΅Π»ΠΈ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, совСт 43 Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚, ΠΏΠΎΡ‡Π΅ΠΌΡƒ интСнсивноС использованиС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² СстСствСнным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ частому влоТСнию Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ использованию Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ‚ΠΎΡ€ΠΎΠ². ВСрнСмся ΠΊ постановкС Π·Π°Π΄Π°Ρ‡ΠΈ, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ начинаСтся настоящий совСт.

Допустим, имССтся Π²Π΅ΠΊΡ‚ΠΎΡ€ vector<int>. Из этого Π²Π΅ΠΊΡ‚ΠΎΡ€Π° трСбуСтся ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС элСмСнты, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… мСньшС Ρ…, Π½ΠΎ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ элСмСнты, ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ послСднСму Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΡŽ значСния, Π½Π΅ мСньшСго Ρƒ.

НСтрудно ΠΏΡ€ΠΈΠ΄Ρ‚ΠΈ ΠΊ ΠΎΠ±Ρ‰Π΅ΠΉ схСмС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ:

‒поиск послСднСго вхоТдСния значСния Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ примСнСния find ΠΈΠ»ΠΈ find_if с ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ;

β€’ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнтов Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ erase ΠΈΠ»ΠΈ ΠΈΠ΄ΠΈΠΎΠΌΡ‹ erase-remove.

ОбъСдиняя эти Π΄Π²Π΅ ΠΈΠ΄Π΅ΠΈ, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ псСвдокод, Π³Π΄Π΅ Β«Π½Π΅Ρ‡Ρ‚ΠΎΒ» ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅Ρ‰Π΅ Π½Π΅ Π±Ρ‹Π» Π½Π°ΠΏΠΎΠ»Π½Π΅Π½ смысловым содСрТаниСм:

v.erase(remove_if(find_if(v.rbegin(). v.rend(). Π½Π΅Ρ‡Ρ‚ΠΎ).base(). v.end(). Π½Π΅Ρ‡Ρ‚ΠΎ)).

v.end());

ΠŸΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠΉ схСмы Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ кроСтся Π·Π° Β«Π½Π΅Ρ‡Ρ‚ΠΎΒ», совсСм нСслоТно. Π’Ρ‹ Π½Π΅ успССтС ΠΎΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒΡΡ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ΄Π΅Ρ‚Π΅ ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ ΠΈΠ· исходного ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°. Π’ΠΎ врСмя написания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ выглядят Π²ΠΏΠΎΠ»Π½Π΅ Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Π½ΠΈΡ… отраТаСтся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ΄ΠΈΠΎΠΌΡ‹ erase-remove плюс использованиС find с ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ). К соТалСнию, Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŽ вашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ Π½Π° Ρ‚Π΅ ΠΈΠ΄Π΅ΠΈ, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ Π±Ρ‹Π» собран. «НСчитаСмый» ΠΊΠΎΠ΄ Π»Π΅Π³ΠΊΠΎ ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ, Π½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² Π½Π΅ΠΌ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ.

Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, Β«Π½Π΅Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒΒ» зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΡ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Как ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ программисты Π‘++ Π²ΠΏΠΎΠ»Π½Π΅ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ относятся ΠΊ конструкциям Π²Ρ€ΠΎΠ΄Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π² Π½Π°Ρ‡Π°Π»Π΅ этого совСта. Если такая ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π° Ρ‚ΠΈΠΏΠΈΡ‡Π½Π° для срСды, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅, ΠΈ Π²Ρ‹ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° останСтся Ρ‚Π°ΠΊΠΎΠ²ΠΎΠΉ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ, Π½Π΅ сдСрТивайтС свои творчСскиС ΠΏΠΎΡ€Ρ‹Π²Ρ‹. Но Ссли ваши ΠΊΠΎΠ»Π»Π΅Π³ΠΈ нСдостаточно ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎ Π²Π»Π°Π΄Π΅ΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ стилСм программирования ΠΈ Π½Π΅ ΡΡ‚ΠΎΠ»ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ Π² STL, ΡƒΠΌΠ΅Ρ€ΡŒΡ‚Π΅ свои Π°ΠΌΠ±ΠΈΡ†ΠΈΠΈ ΠΈ Π½Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π²Ρ€ΠΎΠ΄Π΅ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅.

Π‘Π°Π½Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΊΡ‚ ΠΈΠ· области программирования: ΠΊΠΎΠ΄ Ρ‡Π°Ρ‰Π΅ читаСтся, Ρ‡Π΅ΠΌ ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ. Π₯ΠΎΡ€ΠΎΡˆΠΎ извСстно Ρ‚Π°ΠΊΠΆΠ΅, Ρ‡Ρ‚ΠΎ Π½Π° сопровоТдСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΡƒΡ…ΠΎΠ΄ΠΈΡ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Ρ‡Π΅ΠΌ Π½Π° Π΅Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ. Если ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ нСльзя ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Π΅Π΅ нСльзя ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°Ρ‚ΡŒ, Π° Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΠΈΠΊΠΎΠΌΡƒ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹. Π§Π΅ΠΌ большС Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с STL, Ρ‚Π΅ΠΌ ΡƒΠ²Π΅Ρ€Π΅Π½Π½Π΅Π΅ сСбя чувствуСтС ΠΈ Ρ‚Π΅ΠΌ сильнСС хочСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Β«Π½Π° Π»Π΅Ρ‚ΡƒΒ». Π’ этом Π½Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΏΠ»ΠΎΡ…ΠΎΠ³ΠΎ, Π½ΠΎ всСгда слСдуСт ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ сСгодня ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π·Π°Π²Ρ‚Ρ€Π° придСтся ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ β€” ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ, Π΄Π°ΠΆΠ΅ Π²Π°ΠΌ. ΠŸΡ€ΠΈΠ³ΠΎΡ‚ΠΎΠ²ΡŒΡ‚Π΅ΡΡŒ ΠΊ этому дню.

Π”Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ STL Π² своСй Ρ€Π°Π±ΠΎΡ‚Π΅. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΈ эффСктивно... Π½ΠΎ ΠΈΠ·Π±Π΅Π³Π°ΠΉΡ‚Π΅ написания Β«Π½Π΅Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠ³ΠΎΒ» ΠΊΠΎΠ΄Π°. Π’ долгосрочной пСрспСктивС Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠ°ΠΊΠΈΠΌ ΡƒΠ³ΠΎΠ΄Π½ΠΎ, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ эффСктивным.

Π‘ΠΎΠ²Π΅Ρ‚ 48. ВсСгда Π²ΠΊΠ»ΡŽΡ‡Π°ΠΉΡ‚Π΅ Π½ΡƒΠΆΠ½Ρ‹Π΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ

ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π² STL Π½Π΅Ρ€Π΅Π΄ΠΊΠΎ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅, Π½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² #include Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ. Π­Ρ‚ΠΎΡ‚ Ρ€Π°Π·Π΄Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΠΉ Ρ„Π°ΠΊΡ‚ связан с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ Π‘++ (Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π° Π‘) Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΊΠ°ΠΊΠΈΠ΅ стандартныС Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ»ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ Π² Π΄Ρ€ΡƒΠ³ΠΈΠ΅ стандартныС Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ. Авторы Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ прСдоставлСнной свободой ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ.

ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΡŽ ΠΏΠΎΡΡΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. ΠžΠ΄Π½Π°ΠΆΠ΄Ρ‹ я засСл Π·Π° ΠΏΡΡ‚ΡŒ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ STL (Π½Π°Π·ΠΎΠ²Π΅ΠΌ ΠΈΡ… А, Π’, Π‘, D ΠΈ Π•) ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π» ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡƒΡ‚Π΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ стандартныС Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€ΠΈ этом Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ. По этим Π΄Π°Π½Π½Ρ‹ΠΌ становится ясно, ΠΊΠ°ΠΊΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²ΠΎΠΉ #include. Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ я ΡƒΠ·Π½Π°Π»:

β€’Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… А ΠΈ Π‘ <vector> Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ <string>;

β€’Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Π‘ <algorithm> Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ <string>;

β€’Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… Π‘ ΠΈ D <iostream> Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ <iterator>;

β€’Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ D <iostream> Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ <string> ΠΈ <vector>;

β€’Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ… D ΠΈ Π• <string> Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ <algorithm>;

β€’Π²ΠΎ всСх пяти рСализациях <set> Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ <functional>

Π—Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ послСднСго случая ΠΌΠ½Π΅ Ρ‚Π°ΠΊ ΠΈ Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ провСсти ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ с ΡƒΠ±Ρ€Π°Π½Π½Ρ‹ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ ΠΌΠΈΠΌΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π’. По Π·Π°ΠΊΠΎΠ½Ρƒ ΠœΡΡ€Ρ„ΠΈ Π²Π°ΠΌ всСгда придСтся вСсти Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Π½Π° Ρ‚Π°ΠΊΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…, ΠΊΠ°ΠΊ А, Π‘, D ΠΈ Π•, ΠΈ ΠΏΠ΅Ρ€Π΅Π½ΠΎΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, ΠΊΠ°ΠΊ Π’, особСнно ΠΊΠΎΠ³Π΄Π° это ΠΎΡ‡Π΅Π½ΡŒ ваТная Ρ€Π°Π±ΠΎΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ скорСС. Π’Π°ΠΊ Π±Ρ‹Π²Π°Π΅Ρ‚ всСгда.