WORK IN PROGRESS
ΠΠΎΠΌΠΏΠ°ΠΊΠ½ΡΡΠΉ Π²Π΅ΠΊΡΠΎΡ. ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ std::vector Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ small string optimization.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅. ΠΠ±ΡΡΠ½ΠΎ Π²Π΅ΠΊΡΠΎΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈΠΌΠ΅Π΅Ρ ΡΡΠΈ ΠΏΠΎΠ»Ρ: ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ/ΠΈΠ½Π΄Π΅ΠΊΡ Π΄Π»Ρ Π·Π°Π΄Π°Π½ΠΈΡ begin, end ΠΈ capacity (Π³Π΄Π΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, Π° Π³Π΄Π΅ ΠΈΠ½Π΄Π΅ΠΊΡ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ). Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π΄Π²Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° x64 - ΡΡΠΎ 16 Π±Π°ΠΉΡ, Π² ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΌΠ΅ΡΡΠΈΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ Π²Π΅ΠΊΡΠΎΡ. ΠΠ°Π½Π½ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ΅ΠΊ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π΄Π°Π½Π½ΡΡ , ΠΈ ΠΊΡΡΡ Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅. Π Π°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Π½Π° ΡΡΠ΅ΠΊΠ΅ ΠΈΠ»ΠΈ ΠΊΡΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ std::vector ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΠΎΡΠ»ΠΈΡΠΈΡΠΌΠΈ:
- compact_vector ΠΈΠΌΠ΅Π΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π² ΡΠ°Π±Π»ΠΎΠ½Π΅ - compact_max_size. ΠΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΌΠ΅ΡΠ°ΡΡΡΡ Π² ΡΡΠ΅ΠΊΠ΅. compact_max_size Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΌΠ΅Π½ΡΡΠ΅ Π΅Π΄ΠΈΠ½ΠΈΡΡ, Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ· sizeof(void*) ΠΈ sizeof(size_t);
- ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ std::vector::max_size() / 2;
- Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ ΠΏΡΠΎΡΠ΅Π΄Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΡΠΎΠΌΠ°Π½ΡΠ° Π²ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ Π½Π° ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π΄Π°Π½Π½ΡΡ (ΡΡΠ΅ΠΊ ΠΈΠ»ΠΈ ΠΊΡΡΠ°), ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈΠ· ΡΡΠ΅ΠΊΠ° Π² ΠΊΡΡΡ ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΈ, Π² ΡΠ΅Π»ΠΎΠΌ, ΠΈΠ·-Π·Π° ΠΏΡΠΎΠΏΡΡΠ΅Π½Π½ΡΡ Π°Π²ΡΠΎΡΠΎΠΌ ΡΠ΅Ρ Π½ΠΈΠΊ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ;