// arraySize ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ Π² Π½Π΅Π³ΠΎ Π΄Π°Π½Π½ΡΠ΅.
// ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π·Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ ΡΠΈΡΠ΅Π» Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ Π½Π΅ ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ
// maxNumChars
size_t fillString(char *pArray. sizet arraySize);
vector<char> vc(maxNumChars); // Π‘ΠΎΠ·Π΄Π°ΡΡ vector, Π΅ΠΌΠΊΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ
// ΡΠ°Π²Π½Π° maxNumChars
size_t charsWritten = fillString(&vc[0],vc.size());
// ΠΠ°ΠΏΠΎΠ»Π½ΠΈΡΡ vc
// Π²ΡΠ·ΠΎΠ²ΠΎΠΌ fillString string s(vc.begin().vc.begin()+charsWritten);
// Π‘ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅
// ΠΈΠ· vc Π² s ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΡΠ½ΡΠΌ
// ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ (ΡΠΎΠ²Π΅Ρ 5)
Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, ΡΠ°ΠΌ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ API Π² vector ΠΈ ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² Π½ΡΠΆΠ½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ STL ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π²ΡΠ΅Π³Π΄Π°:
size_t fillArray(double *pArray. size_t arraySize); // Π‘ΠΌ. ΡΠ°Π½Π΅Π΅
vector<double> vd(maxNumDoubles);// Π’Π°ΠΊΠΆΠ΅ ΡΠΌ. ΡΠ°Π½Π΅Π΅
vd.resize(fillArray(&vd[0],vd.size());
deque<double> d(vd.begin().vd.end());// ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² deque
list<double> l(vd.begin().vd.end());// ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² list
set<double> s(vd.begin(),vd.end()):// ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² set
ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎΡ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ· Π΄ΡΡΠ³ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² STL, ΠΊΡΠΎΠΌΠ΅ vector ΠΈ string, ΡΡΠ½ΠΊΡΠΈΡΠΌ Π‘. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π² vector ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΅Π³ΠΎ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅:
void doSomething(const int* pints. size_t numlnts); // Π€ΡΠ½ΠΊΡΠΈΡ Π‘ (ΡΠΌ. ΡΠ°Π½Π΅Π΅)
set<int> intSet:
// ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ
// Ρ ΡΠ°Π½ΡΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΠ΅
// Π΄Π°Π½Π½ΡΠ΅
vector<int> v(intSet.begin(),intSet.end());// Π‘ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅
// ΠΈΠ· set Π² vector
if (!v.empty()) doSomething(&v[0],v.size());// ΠΠ΅ΡΠ΅Π΄Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅
// ΡΡΠ½ΠΊΡΠΈΠΈ Π‘
ΠΠΎΠΎΠ±ΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, Π΄Π°Π½Π½ΡΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π² ΠΌΠ°ΡΡΠΈΠ² ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π‘, Π½ΠΎ Π·Π°ΡΠ΅ΠΌ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ? ΠΡΠ»ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π½Π΅ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ Π½Π° ΡΡΠ°Π΄ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΠΏΠ°ΠΌΡΡΡ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π²ΡΠ΄Π΅Π»ΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ, Π° Π² ΡΠΎΠ²Π΅ΡΠ΅ 13 ΠΎΠ±ΡΡΡΠ½ΡΠ΅ΡΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ Π²ΠΌΠ΅ΡΡΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ vector.
Π‘ΠΎΠ²Π΅Ρ 17. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Β«ΡΠΎΠΊΡΡ Ρ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉΒ» Π΄Π»Ρ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ Π΅ΠΌΠΊΠΎΡΡΠΈ
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π²Ρ ΠΏΠΈΡΠ΅ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅Π»Π΅ΡΠΎΡ Β«ΠΠ΅ΡΠ΅Π½ΡΠ΅ Π΄Π΅Π½ΡΠ³ΠΈΒ». ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠ°Ρ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² Π²Π΅ΠΊΡΠΎΡΠ΅:
class Contestant {...};
vector<Contestant> contestants;
ΠΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ Π½Π°Π±ΠΎΡΠ° ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ² Π·Π°ΡΠ²ΠΊΠΈ ΡΡΠΏΠ»ΡΡΡΡ Π³ΡΠ°Π΄ΠΎΠΌ, ΠΈ Π²Π΅ΠΊΡΠΎΡ Π±ΡΡΡΡΠΎ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ. ΠΠΎ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΠΎΡΠ±ΠΎΡΠ° ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π½ΡΡ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΠΎΠ² ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² Π½Π°ΡΠ°Π»ΠΎ Π²Π΅ΠΊΡΠΎΡΠ° (Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π²ΡΠ·ΠΎΠ²ΠΎΠΌ partial_sort ΠΈΠ»ΠΈ partition β ΡΠΌ. ΡΠΎΠ²Π΅Ρ 31), Π° Π½Π΅ΡΠ΄Π°ΡΠ½ΠΈΠΊΠΈ ΡΠ΄Π°Π»ΡΡΡΡΡ ΠΈΠ· Π²Π΅ΠΊΡΠΎΡΠ° (ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΡ erase β ΡΠΌ. ΡΠΎΠ²Π΅Ρ 5). Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π΄Π»ΠΈΠ½Π° Π²Π΅ΠΊΡΠΎΡΠ° ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΡΡΡ, Π½ΠΎ Π΅ΠΌΠΊΠΎΡΡΡ ΠΎΡΡΠ°Π΅ΡΡΡ ΠΏΡΠ΅ΠΆΠ½Π΅ΠΉ. ΠΡΠ»ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²Π΅ΠΊΡΠΎΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π» Π΄Π°Π½Π½ΡΠ΅ ΠΎ 100 000 ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΠΎΠ², ΡΠΎ Π΅Π³ΠΎ Π΅ΠΌΠΊΠΎΡΡΡ ΠΎΡΡΠ°Π½Π΅ΡΡΡ ΡΠ°Π²Π½ΠΎΠΉ 100 000, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½Π΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΌΠ΅Π½ΡΡΠΈΡΡΡ Π΄ΠΎ 10.
Π§ΡΠΎΠ±Ρ Π²Π΅ΠΊΡΠΎΡ Π½Π΅ ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°Π» Π½Π΅Π½ΡΠΆΠ½ΡΡ ΠΏΠ°ΠΌΡΡΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ ΡΡΠ΅Π΄ΡΡΠ²Π°, ΠΊΠΎΡΠΎΡΡΠ΅ Π±Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ»ΠΈ ΡΠΎΠΊΡΠ°ΡΠΈΡΡ Π΅ΠΌΠΊΠΎΡΡΡ ΠΎΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ Π΄ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ Π² Π½Π°ΡΡΠΎΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ. ΠΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ Π΅ΠΌΠΊΠΎΡΡΠΈ ΠΎΠ±ΡΡΠ½ΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Β«ΡΠΆΠ°ΡΠΈΠ΅ΠΌ ΠΏΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡΒ». Π‘ΠΆΠ°ΡΠΈΠ΅ ΠΏΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡ Π»Π΅Π³ΠΊΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ΅ΡΡΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΊΠΎΠ΄ β ΠΊΠ°ΠΊ Π±Ρ Π²ΡΡΠ°Π·ΠΈΡΡΡΡ ΠΏΠΎΠ΄Π΅Π»ΠΈΠΊΠ°ΡΠ½Π΅Π΅? β Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΠΎ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ, ΠΊΠ°ΠΊ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
Π£ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π»ΠΈΡΠ½Π΅ΠΉ Π΅ΠΌΠΊΠΎΡΡΠΈ Π² Π²Π΅ΠΊΡΠΎΡΠ΅ contestants ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
vector<Contestant>(contestants).swap(contestants);
ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ vector<Contestant>(contestants) ΡΠΎΠ·Π΄Π°Π΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ Π²Π΅ΠΊΡΠΎΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΊΠΎΠΏΠΈΡ contestants; ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ°Π±ΠΎΡΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΊΠΎΠΏΠΈΡΡΡΡΠΈΠΌ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ vector. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΊΠΎΠΏΠΈΡΡΡΡΠΈΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ vector Π²ΡΠ΄Π΅Π»ΡΠ΅Ρ ΡΠΎΠ²Π½ΠΎ ΡΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΠΌΡΡΠΈ, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΏΠΎΡΡΠΎΠΌΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ Π²Π΅ΠΊΡΠΎΡ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π»ΠΈΡΠ½Π΅ΠΉ Π΅ΠΌΠΊΠΎΡΡΠΈ. ΠΠ°ΡΠ΅ΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π²Π΅ΠΊΡΠΎΡΠ° contestants ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΌΠ΅ΡΡΠ°ΠΌΠΈ Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ Π²Π΅ΠΊΡΠΎΡΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ swap. ΠΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π² contestants ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Π²Π΅ΠΊΡΠΎΡΠ° Ρ ΡΡΠ΅ΡΠ΅Π½Π½ΠΎΠΉ Π΅ΠΌΠΊΠΎΡΡΡΡ, Π° Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ Π²Π΅ΠΊΡΠΎΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Β«ΡΠ°Π·Π΄ΡΡΡΠ΅Β» Π΄Π°Π½Π½ΡΠ΅, ΡΠ°Π½Π΅Π΅ Π½Π°Ρ ΠΎΠ΄ΠΈΠ²ΡΠΈΠ΅ΡΡ Π² contestants. Π ΡΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ (ΡΠΎ Π΅ΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ) Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ Π²Π΅ΠΊΡΠΎΡ ΡΠ½ΠΈΡΡΠΎΠΆΠ°Π΅ΡΡΡ, ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Ρ ΠΏΠ°ΠΌΡΡΡ, ΡΠ°Π½Π΅Π΅ Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡΡ Π²Π΅ΠΊΡΠΎΡΠΎΠΌ contestants.
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΉ ΠΏΡΠΈΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΈ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ ΡΡΡΠΎΠΊΠ°ΠΌ:
string s;
// Π‘ΠΎΠ·Π΄Π°ΡΡ Π±ΠΎΠ»ΡΡΡΡ ΡΡΡΠΎΠΊΡ ΠΈ ΡΠ΄Π°Π»ΠΈΡΡ ΠΈΠ· Π½Π΅Π΅ // Π±ΠΎΠ»ΡΡΡΡ ΡΠ°ΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²
string(s).swap(s);// ΠΡΠΏΠΎΠ»Π½ΠΈΡΡ "ΡΠΆΠ°ΡΠΈΠ΅ ΠΏΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡ" Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ s
Π― Π½Π΅ ΠΌΠΎΠ³Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΡΠΎΠΏΡΠΎΡΠ΅Π½ΡΠ½ΠΎΠΉ Π³Π°ΡΠ°Π½ΡΠΈΠΈ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΡΠΎΠΌ ΠΏΡΠΈΠ΅ΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΄Π°Π»ΠΈΡ ΠΈΠ· ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π»ΠΈΡΠ½ΡΡ Π΅ΠΌΠΊΠΎΡΡΡ. ΠΠ²ΡΠΎΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΠΏΡΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΌΠΎΠ³ΡΡ Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΠΎ Π²ΡΠ΄Π΅Π»ΠΈΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Ρ vector ΠΈ string Π»ΠΈΡΠ½ΡΡ ΠΏΠ°ΠΌΡΡΡ, ΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΡΠ°ΠΊ ΠΈ ΠΏΠΎΡΡΡΠΏΠ°ΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±Π»Π°Π΄Π°ΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ Π΅ΠΌΠΊΠΎΡΡΡΡ ΠΈΠ»ΠΈ ΠΆΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΅ΠΌΠΊΠΎΡΡΠΈ vector/string ΠΌΠΎΠ³ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡΡΡ ΡΡΠ΅ΠΏΠ΅Π½ΡΠΌΠΈ 2 (ΠΏΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΌΡ ΠΎΠΏΡΡΡ ΠΌΠΎΠ³Ρ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ Π°Π½ΠΎΠΌΠ°Π»ΠΈΠΈ ΡΠ°ΡΠ΅ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡ string, Π½Π΅ΠΆΠ΅Π»ΠΈ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡ vector. ΠΠ° ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΎΠ±ΡΠ°ΡΠ°ΠΉΡΠ΅ΡΡ ΠΊ ΡΠΎΠ²Π΅ΡΡ 15). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Β«ΡΠΆΠ°ΡΠΈΠ΅ ΠΏΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡΒ» ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ Π½Π΅ ΠΊΠ°ΠΊ Β«ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ Π΅ΠΌΠΊΠΎΡΡΠΈΒ», Π° ΠΊΠ°ΠΊ Β«ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ Π΅ΠΌΠΊΠΎΡΡΠΈ, Π΄ΠΎΠΏΡΡΠΊΠ°Π΅ΠΌΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°Β». ΠΠΏΡΠΎΡΠ΅ΠΌ, ΡΡΠΎ Π»ΡΡΡΠ΅Π΅, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ (Π½Π΅ ΡΡΠΈΡΠ°Ρ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° Π½Π° Π΄ΡΡΠ³ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ STL), ΠΏΠΎΡΡΠΎΠΌΡ Β«ΡΠΆΠ°ΡΠΈΠ΅ ΠΏΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡΒ» Π΄Π»Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² vector ΠΈ string ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ Β«ΡΠΎΠΊΡΡΡ Ρ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉΒ».
ΠΡΡΠ°ΡΠΈ Π³ΠΎΠ²ΠΎΡΡ, ΠΎΠ΄Π½Π° ΠΈΠ· ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΠ΅ΠΉ Β«ΡΠΎΠΊΡΡΠ° Ρ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉΒ» ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΎΡΠΈΡΡΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ΠΌ Π΅ΠΌΠΊΠΎΡΡΠΈ Π΄ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ Π²Π°ΡΠ΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π² ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ vector ΠΈΠ»ΠΈ string, ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ:
vector<Contestant> v;
string s;
// ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ v ΠΈ s
vector <Contestant>().swap(v); // ΠΡΠΈΡΡΠΈΡΡ v Ρ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ΠΌ Π΅ΠΌΠΊΠΎΡΡΠΈ
string().swap(s);// ΠΡΠΈΡΡΠΈΡΡ s Ρ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ΠΌ Π΅ΠΌΠΊΠΎΡΡΠΈ
ΠΡΡΠ°Π΅ΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅, ΠΎΡΠ½ΠΎΡΡΡΠ΅Π΅ΡΡ ΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ swap Π² ΡΠ΅Π»ΠΎΠΌ. ΠΠ΅ΡΠ΅ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ Π΄Π²ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΈΡ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠΎΠ², ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ ΠΈ ΡΡΡΠ»ΠΎΠΊ. ΠΡΠ΅ΡΠ°ΡΠΎΡΡ, ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΈ ΡΡΡΠ»ΠΊΠΈ, ΠΎΡΠ½ΠΎΡΠΈΠ²ΡΠΈΠ΅ΡΡ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, ΠΏΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° swap ΠΎΡΡΠ°ΡΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΠΈ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΡΠ΅ ΠΆΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ β Π½ΠΎ Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅.
Π‘ΠΎΠ²Π΅Ρ 18. ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ vector<bool>
Vector<bool> ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ STL ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ Π»ΠΈΡΡ Π΄Π²ΡΠΌΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠ°ΠΌΠΈ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΡΡΠΎ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ STL. ΠΠΎ-Π²ΡΠΎΡΡΡ , ΠΎΠ½ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ bool.
ΠΠ±ΡΠ΅ΠΊΡ Π½Π΅ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠΌ STL ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΊΡΠΎ-ΡΠΎ Π½Π°Π·Π²Π°Π» Π΅Π³ΠΎ ΡΠ°ΠΊΠΎΠ²ΡΠΌ β ΠΎΠ½ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠΌ STL Π»ΠΈΡΡ ΠΏΡΠΈ ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΠΈ Π²ΡΠ΅Ρ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ, ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½ΡΡ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ 23.1 Π‘ΡΠ°Π½Π΄Π°ΡΡΠ° Π‘++. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π² ΡΡΠΈΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΡ Π³ΠΎΠ²ΠΎΡΠΈΡΡΡ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Ρ β ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΠΈΠΏΠ° Π’, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ [], ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ:
Π’ *Ρ = &Ρ[0];// ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π’* Π°Π΄ΡΠ΅ΡΠΎΠΌ Π΄Π°Π½Π½ΡΡ ,
// Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ []
ΠΠ½Π°ΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, Π΅ΡΠ»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ [ ] ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π’ Π² Container<T>, ΡΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΡΠΎΡΡΡΠΌ Π²Π·ΡΡΠΈΠ΅ΠΌ Π΅Π³ΠΎ Π°Π΄ΡΠ΅ΡΠ° (ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ & ΡΠΈΠΏΠ° Π’ Π½Π΅ Π±ΡΠ» ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½ ΠΈΠ·Π²ΡΠ°ΡΠ΅Π½Π½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ). Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΎΠ±Ρ vector<bool> Π±ΡΠ» ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠΌ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ:
vector<bool> v;
bool *pb = &v[0]: // ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ bool* Π°Π΄ΡΠ΅ΡΠΎΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°.
// Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ vector<bool>::operator[]
ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ. ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ vector<bool> β ΠΏΡΠ΅Π²Π΄ΠΎΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ Π½Π΅ Π½Π°ΡΡΠΎΡΡΠΈΠ΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ bool, Π° ΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π»Ρ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΠΈ ΠΌΠ΅ΡΡΠ°. Π ΡΠΈΠΏΠΈΡΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΏΡΠ΅Π²Π΄ΠΎΠ²Π΅Π»ΠΈΡΠΈΠ½Π° Β«boolΒ», Ρ ΡΠ°Π½ΡΡΠ°ΡΡΡ Π² ΠΏΡΠ΅Π²Π΄ΠΎΠ²Π΅ΠΊΡΠΎΡΠ΅, Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΎΠ΄ΠΈΠ½ Π±ΠΈΡ, Π° Π²ΠΎΡΡΠΌΠΈΠ±ΠΈΡΠΎΠ²ΡΠΉ Π±Π°ΠΉΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΠΎΡΠ΅ΠΌΡ Β«boolΒ». ΠΠΎ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ vector<bool> Π±ΡΠ»Π΅Π²Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Ρ ΡΠ°Π½ΠΈΡΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΡΡ Π°Π½Π°Π»ΠΎΠ³Π°ΠΌΠΈ Π±ΠΈΡΠΎΠ²ΡΡ ΠΏΠΎΠ»Π΅ΠΉ.
ΠΠΈΡΠΎΠ²ΡΠ΅ ΠΏΠΎΠ»Ρ, ΠΊΠ°ΠΊ ΠΈ bool, ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π²Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π½ΠΎ ΠΌΠ΅ΠΆΠ΄Ρ Β«Π½Π°ΡΡΠΎΡΡΠΈΠΌΠΈΒ» Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ Π²Π΅Π»ΠΈΡΠΈΠ½Π°ΠΌΠΈ ΠΈ ΠΌΠ°ΡΠΊΠΈΡΡΡΡΠΈΠΌΠΈΡΡ ΠΏΠΎΠ΄ Π½ΠΈΡ Π±ΠΈΡΠΎΠ²ΡΠΌΠΈ ΠΏΠΎΠ»ΡΠΌΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅. Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ΅Π°Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ bool ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ Π±ΠΈΡΡ Π·Π°ΠΏΡΠ΅ΡΠ΅Π½Ρ.
Π‘ΡΡΠ»ΠΊΠΈ Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ Π±ΠΈΡΡ ΡΠΎΠΆΠ΅ Π·Π°ΠΏΡΠ΅ΡΠ΅Π½Ρ, ΡΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π΄Π»Ρ Π΄ΠΈΠ·Π°ΠΉΠ½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° vector<bool>, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠ½ΠΊΡΠΈΡ vector<T>::operator[] Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° Π’&. ΠΡΠ»ΠΈ Π±Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ vector<bool> Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π» bool, ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π»ΠΎ Π±Ρ, Π½ΠΎ Π²ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΡ vector<T>::operator[] Π΄ΠΎΠ»ΠΆΠ½Π° Π²Π΅ΡΠ½ΡΡΡ Π½Π΅ΡΡΡΠ΅ΡΡΠ²ΡΡΡΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ Π±ΠΈΡ.
Π§ΡΠΎΠ±Ρ ΡΠΏΡΠ°Π²ΠΈΡΡΡΡ Ρ ΡΡΠΈΠΌ Π·Π°ΡΡΡΠ΄Π½Π΅Π½ΠΈΠ΅ΠΌ, ΡΡΠ½ΠΊΡΠΈΡ vector<T>::operator[] Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠΈΡΠΈΡΡΠ΅Ρ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ Π±ΠΈΡ β ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ STL Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π½ΠΎ Π²ΠΎΠΎΠ±ΡΠ΅ ΡΡΠΎ Π²Π΅ΡΡΠΌΠ° ΠΏΠΎΠ»Π΅Π·Π½Π°Ρ ΠΈΠ΄ΠΈΠΎΠΌΠ° Π‘++. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°Ρ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° Π² ΡΠΎΠ²Π΅ΡΠ΅ 30 Β«More Effective Π‘++Β», Π° ΡΠ°ΠΊΠΆΠ΅ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Β«ΠΠ°ΡΡΠ΅ΡΠ½ Π Π³ΠΎΡ ΡΒ» ΠΊΠ½ΠΈΠ³ΠΈ Β«ΠΡΠΈΠ΅ΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡΒ» [6]. ΠΠ° ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅ΠΌ ΡΡΠΎΠ²Π½Π΅ vector<bool> Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ: