ΠΡΡΠ³Π°Ρ ΠΏΡΠΈΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½Π΅Π΅ ΠΎΠ±ΡΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΠΎΠ±ΠΎΠΉΡΠΈ Ρ ΠΈΡΡΡΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π»ΠΎΠ²ΡΡΠΊΠΈ. ΠΠ½ΠΎΠ³Π΄Π° ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠ΅ΠΊΡΡ, Π²ΡΠ³Π»ΡΠ΄ΡΡΠΈΠΉ Π²ΠΏΠΎΠ»Π½Π΅ ΡΠ°Π·ΡΠΌΠ½ΠΎ, ΠΎΡΠ²Π΅ΡΠ³Π°Π΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ ΠΏΠΎ Π·Π°ΠΊΠΎΠ½Π½ΡΠΌ, Ρ ΠΎΡΡ ΠΈ Π½Π΅ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΌ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΡΡ ΠΈΠΌΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°, ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π½Π° Π±Π°Π·Π΅ ΡΠ°Π±Π»ΠΎΠ½Π° ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π΅ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠΈΠΌΠ΅Ρ:
template<typename FPType> // ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ
FPType average(FPType val1, FPType val2) // Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π΄Π²ΡΡ
{ //Π²Π΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠΈΡΠ΅Π»
return (val1 + val2)/2;
};
template<typename InputIter1, typename InputIter2>
void writeAverages(InputIter begin1, // ΠΡΡΠΈΡΠ»ΠΈΡΡ ΠΏΠΎΠΏΠ°ΡΠ½ΡΠ΅
InputIter end1, // ΡΡΠ΅Π΄Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
InputIter begin2, // Π΄Π²ΡΡ ΡΠ΅ΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
ostream& s) { // Π² ΠΏΠΎΡΠΎΠΊΠ΅
transform(begin1, end1, begin2,
ostream_iterator<typename iterator_traits<InputIter1>::value_type>(s, "\n"),
average<typename iterator traits<InputIter1>::value_type>()); // ΠΡΠΈΠ±ΠΊΠ°?
}
ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΡΠΎΡ ΠΊΠΎΠ΄, Π½ΠΎ ΠΏΠΎ Π‘ΡΠ°Π½Π΄Π°ΡΡΡ C++ ΠΎΠ½ ΡΡΠΈΡΠ°Π΅ΡΡΡ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΌ. ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ°Π±Π»ΠΎΠ½ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ average, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠΉ Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ-ΡΠΈΠΏΠΎΠΌ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ average<typename iterator_traits<InputIter1>::value_type> ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΡΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ ΡΠ°Π±Π»ΠΎΠ½ Π² Π½Π΅ΠΌ ΡΠΏΠΎΠΌΠΈΠ½Π°Π΅ΡΡΡ. Π ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎΡΡΡ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ, Π½ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ Π½Π° Π²ΠΏΠΎΠ»Π½Π΅ Π·Π°ΠΊΠΎΠ½Π½ΠΎΠΌ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΠΎΡΠ²Π΅ΡΠ³Π°ΡΡ ΡΡΠΎΡ ΠΊΠΎΠ΄. Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΎ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ:
template<typename FPType>
struct Average:
public binary_function<FPType, FPType, FPType> { // Π‘ΠΌ. ΡΠΎΠ²Π΅Ρ 40
FPType operator()(FPType val1, FPType val2) const {
return average(val1, val2);
}
};
template<typename InputIter1, typename InputIter2>
void writeAverages(InputIter1 begin1, InputIter1 end1,
InputIter2 begin2, ostream& s) {
transform(begin1, end1, begin2,
ostream_iterator<typename iterator_traits<InputIter1>::value_type>(s, "\n"),
Average<typename iterator_traits<InputIter1>::value_type());
}
ΠΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ Π»ΡΠ±ΡΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π²ΡΠ·ΠΎΠ²Ρ Average::operator() Π²Π½ΡΡΡΠΈ transform Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΡ ΠΊΠΎΠ΄Π°, ΡΡΠΎ Π½Π΅ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°ΠΌ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½Π° average, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ average ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ, Π° Π½Π΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ Π² ΡΠΎΠ»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Π½Π΅ ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΠΏΡΠΎΡΡΠΎΠΌΡ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ. ΠΠ±ΡΠ΅ΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±Π»Π°Π΄Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ΠΉ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΡΡ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΊΠΎΠ΄Π°. ΠΠ΅ΡΡΠΏΠΎΡΠ½ΠΎ, Β«Π½Π°ΡΡΠΎΡΡΠΈΠ΅Β» ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½Ρ, Π½ΠΎ Π² ΠΎΠ±Π»Π°ΡΡΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² 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());
ΠΡΠ΅Π³ΠΎ ΠΎΠ΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΈ Π·Π°Π΄Π°ΡΠ° ΡΠ΅ΡΠ΅Π½Π°. ΠΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΈ ΠΏΡΡΠΌΠΎΠ»ΠΈΠ½Π΅ΠΉΠ½ΠΎ. ΠΠΈΠΊΠ°ΠΊΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. ΠΡΠ°Π²Π΄Π°?
ΠΠ΅ Π±ΡΠ΄Π΅ΠΌ ΡΠΎΡΠΎΠΏΠΈΡΡΡΡ Ρ Π²ΡΠ²ΠΎΠ΄Π°ΠΌΠΈ. Π‘ΡΠΈΡΠ°Π΅ΡΠ΅ Π»ΠΈ Π²Ρ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ ΠΈ ΡΠ΄ΠΎΠ±Π½ΡΠΌ Π² ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ? Β«ΠΠ΅Ρ!Β» β Π²ΠΎΡΠΊΠ»ΠΈΠΊΠ½Π΅Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² C++ Ρ ΡΠΆΠ°ΡΠΎΠΌ ΠΈ ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ΠΌ. Β«ΠΠ°!Β» β ΡΠΊΠ°ΠΆΡΡ ΡΡΠΈΡΠ°Π½Π½ΡΠ΅ Π΅Π΄ΠΈΠ½ΠΈΡΡ Ρ ΡΠ²Π½ΡΠΌ ΡΠ΄ΠΎΠ²ΠΎΠ»ΡΡΡΠ²ΠΈΠ΅ΠΌ. Π ΡΡΠΎΠΌ ΠΈ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°. Π’ΠΎ, ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΡΡΠΈΡΠ°Π΅Ρ Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΡΡΠΎΡΠΎΠΉ, Π΄ΡΡΠ³ΠΎΠΌΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π°Π΄ΡΠΊΠΈΠΌ Π½Π°Π²Π°ΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ.
ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π²ΡΡΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΉΡΡΠ²ΠΎ ΠΏΠΎ Π΄Π²ΡΠΌ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΠΎΠ½ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΠΎ ΡΠ΅ΠΌ ΠΈΠ΄Π΅Ρ ΡΠ΅ΡΡ, ΠΏΡΠΈΠ²Π΅Π΄Ρ ΡΡ ΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΈΠΌΠ΅Π½Π° ΡΡΠ½ΠΊΡΠΈΠΉ Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ fn:
v.f1(f2(f3(v.f4(), v.f5(),f6(f7(), y)).f8(), v.f9(), f6(f10(), x)), v.f9());
Π’Π°ΠΊΠ°Ρ Π·Π°ΠΏΠΈΡΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π½Π΅Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΡΡΠ»ΠΎΠΆΠ½Π΅Π½Π½ΠΎΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΠ· Π½Π΅Π΅ ΡΠ±ΡΠ°Π½Ρ ΠΎΡΡΡΡΠΏΡ, ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡΠΈΠ΅ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅. ΠΠΎΠΆΠ½ΠΎ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² C++ ΡΠΎΡΡΠ΅Ρ, ΡΡΠΎ Π΄Π²Π΅Π½Π°Π΄ΡΠ°ΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² Π΄Π΅ΡΡΡΠΈ ΡΠ°Π·Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ β ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π±ΠΎΡ. ΠΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Ρ ΠΎΠΏΡΡΠΎΠΌ ΡΠ°Π±ΠΎΡΡ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΡΠ·ΡΠΊΠ°Ρ ΡΠΈΠΏΠ° Scheme ΠΌΠΎΠ³ΡΡ ΡΡΠΈΡΠ°ΡΡ ΠΈΠ½Π°ΡΠ΅. ΠΠΎ ΡΠ²ΠΎΠ΅ΠΌΡ ΠΎΠΏΡΡΡ ΠΌΠΎΠ³Ρ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Π»ΠΈ ΡΡΠΎΡ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ Π±Π΅Π· ΠΌΠ°Π»Π΅ΠΉΡΠΈΡ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠ² ΡΠ΄ΠΈΠ²Π»Π΅Π½ΠΈΡ, ΠΈΠΌΠ΅Π»ΠΈ ΠΎΡΠ½ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΎΠΏΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΡΠ·ΡΠΊΠ°Ρ . Π£ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² C++ ΡΠ°ΠΊΠΎΠΉ ΠΎΠΏΡΡ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ, ΡΠ°ΠΊ ΡΡΠΎ Π΅ΡΠ»ΠΈ Π²Π°ΡΠΈ ΠΊΠΎΠ»Π»Π΅Π³ΠΈ Π½Π΅ ΠΏΡΠΈΠ²ΡΠΊΠ»ΠΈ ΠΊ ΠΌΠ½ΠΎΠ³ΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΌ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π²ΡΠΎΠ΄Π΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ Π²ΡΠ·ΠΎΠ²Π° erase Π±ΡΠ΄ΡΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΈΡ Π² Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΡΡΠ²ΠΎ.
ΠΡΠΎΡΠΎΠΉ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π΄Π»Ρ Π΅Π³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ Π½ΡΠΆΠ½ΠΎ Ρ ΠΎΡΠΎΡΠΎ Π·Π½Π°ΡΡ STL. Π Π½Π΅ΠΌ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ ΠΌΠ΅Π½Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠ΅ _if-ΡΠΎΡΠΌΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² find ΠΈ remove, ΠΎΠ±ΡΠ°ΡΠ½ΡΠ΅ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΡ (ΡΠΌ. ΡΠΎΠ²Π΅Ρ 26), ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ reverse_iterator Π² iterator (ΡΠΌ. ΡΠΎΠ²Π΅Ρ 28), bind2nd ΠΈ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ΄ΠΈΠΎΠΌΠ° erase-remove (ΡΠΌ. ΡΠΎΠ²Π΅Ρ 32). ΠΠΏΡΡΠ½ΡΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ STL ΡΠ°Π·Π±Π΅ΡΠ΅ΡΡΡ Π² ΡΡΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Π±Π΅Π· ΠΎΡΠΎΠ±ΠΎΠ³ΠΎ ΡΡΡΠ΄Π°, Π½ΠΎ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊΠΈΡ , ΠΊΡΠΎ Π½Π°Π΄ΠΎΠ»Π³ΠΎ Π·Π°Π΄ΡΠΌΠ°Π΅ΡΡΡ Π½Π°Π΄ Π½Π΅ΠΉ. ΠΡΠ»ΠΈ Π²Π°ΡΠΈ ΠΊΠΎΠ»Π»Π΅Π³ΠΈ Π΄Π°Π»Π΅ΠΊΠΎ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΠ»ΠΈΡΡ Π² ΠΈΠ·ΡΡΠ΅Π½ΠΈΠΈ STL, ΠΏΡΠΈΡΡΡΡΡΠ²ΠΈΠ΅ erase, remove_if, find_if, base ΠΈ bind2nd Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π²ΠΏΠΎΠ»Π½Π΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ, Π½ΠΎ Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ Π²Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π±ΡΠ»Π° ΠΏΠΎΠ½ΡΡΠ½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ C++ ΡΠΎ ΡΡΠ΅Π΄Π½ΠΈΠΌ ΡΡΠΎΠ²Π½Π΅ΠΌ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ, Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ².
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² (ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΊΠ½ΠΈΠ³ΠΈ β Ρ Π±Ρ Π²ΠΊΠ»ΡΡΠΈΠ» ΠΈΡ ΠΈ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ).
typedef vector<int>::iterator VecIntIter;
// ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ angeBegin ΠΏΠ΅ΡΠ²ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ v, Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΈΠ»ΠΈ ΡΠ°Π²Π½ΡΠΌ
// ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌΡ Π²Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Ρ. ΠΡΠ»ΠΈ ΡΠ°ΠΊΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, rangeBegin
// ΠΈΠ½ΠΈΡΠΈΠΈΡΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ v.begin()
VecIntIter 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 C++ Standard LibraryΒ» [3] ΠΈΠ»ΠΈ web-ΡΠ°ΠΉΡΠ° SGI [21]) ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ C++ Π±Π΅Π· ΠΎΡΠΎΠ±ΡΡ ΡΡΠΈΠ»ΠΈΠΉ ΡΠ°Π·Π±Π΅ΡΠ΅ΡΡΡ, ΡΡΠΎ ΠΆΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅.
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Ρ Π½Π΅ ΠΎΡΠΊΠ°Π·Π°Π»ΡΡ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΠΈ Π½Π΅ ΠΏΠΎΠΏΡΡΠ°Π»ΡΡ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΠΈΡ ΡΠΈΠΊΠ»Π°ΠΌΠΈ. Π ΡΠΎΠ²Π΅ΡΠ΅ 43 ΠΎΠ±ΡΡΡΠ½ΡΠ΅ΡΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½Π΅Π΅ ΡΠΈΠΊΠ»ΠΎΠ², ΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΡΡΡ ΠΈ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅. ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ΅Π»Ρ ΠΏΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π°, ΠΏΠΎΠ½ΡΡΠ½ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΡΠΈΡΠ°ΡΠ΅Π»Ρ-ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ°, ΠΈ ΠΎΠ±Π»Π°Π΄Π°ΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΡΠΌ Π±ΡΡΡΡΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΠΌ. ΠΠ»Π³ΠΎΡΠΈΡΠΌΡ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅Π³Π΄Π° Π»ΡΡΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π΄Π»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΡΠ΅Π»ΠΈ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΡΠΎΠ²Π΅Ρ 43 ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±ΡΡΡΠ½ΡΠ΅Ρ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΠ°ΡΡΠΎΠΌΡ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π°Π΄Π°ΠΏΡΠ΅ΡΠΎΠ² ΡΡΠ½ΠΊΡΠΎΡΠΎΠ². ΠΠ΅ΡΠ½Π΅ΠΌΡΡ ΠΊ ΠΏΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ Π·Π°Π΄Π°ΡΠΈ, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Π½Π°ΡΡΠΎΡΡΠΈΠΉ ΡΠΎΠ²Π΅Ρ.
ΠΠΎΠΏΡΡΡΠΈΠΌ, ΠΈΠΌΠ΅Π΅ΡΡΡ Π²Π΅ΠΊΡΠΎΡ vector<int>. ΠΠ· ΡΡΠΎΠ³ΠΎ Π²Π΅ΠΊΡΠΎΡΠ° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ΄Π°Π»ΠΈΡΡ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΡΡ ΠΌΠ΅Π½ΡΡΠ΅ x, Π½ΠΎ ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌΡ Π²Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π½Π΅ ΠΌΠ΅Π½ΡΡΠ΅Π³ΠΎ y.
ΠΠ΅ΡΡΡΠ΄Π½ΠΎ ΠΏΡΠΈΠ΄ΡΠΈ ΠΊ ΠΎΠ±ΡΠ΅ΠΉ ΡΡ Π΅ΠΌΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ:
β’ ΠΏΠΎΠΈΡΠΊ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ Π²Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² Π²Π΅ΠΊΡΠΎΡΠ΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ find ΠΈΠ»ΠΈ find_if Ρ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΌΠΈ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ;
β’ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΡΠ΅Π±ΡΠ΅Ρ erase ΠΈΠ»ΠΈ ΠΈΠ΄ΠΈΠΎΠΌΡ erase-remove.
ΠΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡ ΡΡΠΈ Π΄Π²Π΅ ΠΈΠ΄Π΅ΠΈ, ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠ΅Π²Π΄ΠΎΠΊΠΎΠ΄, Π³Π΄Π΅ Β«Π½Π΅ΡΡΠΎΒ» ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π΅ΡΠ΅ Π½Π΅ Π±ΡΠ» Π½Π°ΠΏΠΎΠ»Π½Π΅Π½ ΡΠΌΡΡΠ»ΠΎΠ²ΡΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ΠΌ:
v.erase(remove_if(find_if(v.rbegin(), v.rend(), Π½Π΅ΡΡΠΎ).base(),
v.end(), Π½Π΅ΡΡΠΎ)), v.end());
ΠΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΡΠ°ΠΊΠΎΠΉ ΡΡ Π΅ΠΌΡ ΡΠ°ΡΡΡΠΈΡΠ°ΡΡ, ΡΡΠΎ ΠΆΠ΅ ΠΊΡΠΎΠ΅ΡΡΡ Π·Π° Β«Π½Π΅ΡΡΠΎΒ», ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ΡΠ»ΠΎΠΆΠ½ΠΎ. ΠΡ Π½Π΅ ΡΡΠΏΠ΅Π΅ΡΠ΅ ΠΎΠΏΠΎΠΌΠ½ΠΈΡΡΡΡ, ΠΊΠ°ΠΊ ΠΏΡΠΈΠ΄Π΅ΡΠ΅ ΠΊ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΈΠ· ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ°. ΠΠΎ Π²ΡΠ΅ΠΌΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΠ³Π»ΡΠ΄ΡΡ Π²ΠΏΠΎΠ»Π½Π΅ Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² Π½ΠΈΡ ΠΎΡΡΠ°ΠΆΠ°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π±Π°Π·ΠΎΠ²ΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ΄ΠΈΠΎΠΌΡ erase-remove ΠΏΠ»ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ find Ρ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΌΠΈ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ). Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΡΠΈΡΠ°ΡΠ΅Π»Ρ Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ΅Π½Ρ ΡΡΡΠ΄Π½ΠΎ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡ Π³ΠΎΡΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡ Π½Π° ΡΠ΅ ΠΈΠ΄Π΅ΠΈ, ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ Π±ΡΠ» ΡΠΎΠ±ΡΠ°Π½. Β«ΠΠ΅ΡΠΈΡΠ°Π΅ΠΌΡΠΉΒ» ΠΊΠΎΠ΄ Π»Π΅Π³ΠΊΠΎ ΠΏΠΈΡΠ΅ΡΡΡ, Π½ΠΎ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² Π½Π΅ΠΌ ΡΡΡΠ΄Π½ΠΎ.