рдЕрддреНрдпрд╛рдзреБрдирд┐рдХ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдБ

рд╡рд░реНрд╖реЛрдВ рд╕реЗ, C ++ рдХреЗ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рд╕рдВрдЪрд╛рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореВрд▓реНрдпреЛрдВ, рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдпрддрд╛ рдФрд░ рд╕рдВрд╕рд╛рдзрди рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд╢рдмреНрджрд╛рд░реНрдереЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореНрдпреВрдЯреЗрдХреНрд╕ рдФрд░ рд░реЗрд╕ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдирдИ рджреБрдирд┐рдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдХрдорд╛рдВрдб рдФрд░ рдСрдмреНрдЬрд░реНрд╡рд░ рдкреИрдЯрд░реНрди рдХреЗ рдмрд┐рдирд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИред рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдЕрднреА рднреА рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдореЗрдВ рд╣реИред



рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рдЙрдирдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдирд╣реАрдВ рдмрджрд▓рддреА рд╣реИрдВред рдЙрдирдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирдП рдореВрд▓реНрдп рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкреБрд░рд╛рдиреЗ рдореВрд▓реНрдп рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рдмрдиреЗ рд╣реБрдП рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдФрд░ рддрд╛рд▓реЛрдВ рдХреЗ рдмрд┐рдирд╛ рд╡рд┐рднрд┐рдиреНрди рдзрд╛рд░рд╛рдУрдВ рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдирддреАрдЬрддрди, рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЕрдзрд┐рдХ рддрд░реНрдХрд╕рдВрдЧрдд рдФрд░ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд░реВрдк рд╕реЗ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреБрд░рд╛рдиреЗ рдФрд░ рдирдП рдореВрд▓реНрдп рдЖрдо рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╡реЗ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рд╣реИрдВ рдФрд░ рд░рджреНрдж рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╕рдм рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдФрд░ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИ: рдРрд╕реА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рдбреЗрд╕реНрдХрдЯреЙрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддреА рд╣реИрдВ рдФрд░ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдмреЗрд╣рддрд░ рдкреИрдорд╛рдиреЗ рдкрд░ рд▓реЗ рдЬрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВред рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕рдВрд░рдЪрдирд╛рдПрдВ рдХреНрд▓реАрдЬреБрд░ рдФрд░ рд╕реНрдХрд╛рд▓рд╛ рдХреА рд╕рдлрд▓рддрд╛ рдХрд╛ рд░рд╣рд╕реНрдп рд╣реИрдВ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдореБрджрд╛рдп рдЕрдм рдЙрдирдХрд╛ рд▓рд╛рдн рдЙрдард╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ Immutable.js рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ,рдХрдВрдкрдиреА рдХреЗ рдмрд╛рдЙрд▓ рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ рдлреЗрд╕рдмреБрдХред

рд╕реА ++ рд░реВрд╕ 2019 рдорд╛рд╕реНрдХреЛ рд╕рдореНрдореЗрд▓рди рд╕реЗ рдЬреБрдЖрди рдкреНрдпреВрдВрдЯреЗ рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рдХрдЯ - рд╡реАрдбрд┐рдпреЛ рдФрд░ рдЕрдиреБрд╡рд╛рдж рдХреЗ рддрд╣рдд ред рдЬреБрдЖрди рдЗрдорд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИ , рд╕реА ++ рдХреЗ рд▓рд┐рдП рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпред рдкреЛрд╕реНрдЯ рдореЗрдВ:

  • рдкреНрд░рддрд┐рд░рдХреНрд╖рд╛ рдХреЗ рд╡рд╛рд╕реНрддреБ рд╕рдВрдмрдВрдзреА рд▓рд╛рдн;
  • рдЖрд░рдЖрд░рдмреА рдкреЗрдбрд╝реЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдкреНрд░рднрд╛рд╡реА рд▓рдЧрд╛рддрд╛рд░ рд╡реЗрдХреНрдЯрд░ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг;
  • рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкрд╛рда рд╕рдВрдкрд╛рджрдХ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдгред




рдореВрд▓реНрдп-рдЖрдзрд╛рд░рд┐рдд рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреА рддреНрд░рд╛рд╕рджреА


рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдорд╣рддреНрд╡ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╢рдмреНрджрд╛рд░реНрде рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ C ++ рдХреА рдПрдХ рдмрд╣реБрдд рд╣реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рдореИрдВ рдЗрд╕реЗ рдЗрд╕ рднрд╛рд╖рд╛ рдХреЗ рдореБрдЦреНрдп рд▓рд╛рднреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдорд╛рдирддрд╛ рд╣реВрдВред рдЗрд╕ рд╕рдм рдХреЗ рд▓рд┐рдП, рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╢рдмреНрджрд╛рд░реНрдереЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдЬреИрд╕рд╛ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдореВрд▓реНрдп-рдЖрдзрд╛рд░рд┐рдд рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреА рддреНрд░рд╛рд╕рджреА рд╣реИ, рдФрд░ рдЗрд╕ рддреНрд░рд╛рд╕рджреА рдХрд╛ рдорд╛рд░реНрдЧ рдЕрдЪреНрдЫреЗ рдЗрд░рд╛рджреЛрдВ рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рд╕рдВрдкрд╛рджрди рдпреЛрдЧреНрдп рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рдореЙрдбрд▓ рдХреЗ рджрд┐рд▓ рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рд╕рд░рд▓ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рднрд╛рд╖рд╛ рдореЗрдВ рдореМрдЬреВрдж рд╣реИ: vector, map, tuple,structред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдЬрд┐рдХ рдРрд╕реЗ рдлрдВрдХреНрд╢рдВрд╕ рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рд╡реИрд▓реНрдпреВ рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ рдбреЙрдХреНрдпреБрдореЗрдВрдЯреНрд╕ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рд╡реИрд▓реНрдпреВ рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рдХрд╛ рдирдпрд╛ рд╡рд░реНрдЬрди рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдиреАрдЪреЗ рд╣реЛрддрд╛ рд╣реИ), рд▓реЗрдХрд┐рди C ++ рдореЗрдВ рдорд╛рдиреЛрдВ рдХреЗ рд╢рдмреНрджрд╛рд░реНрде, рдореВрд▓реНрдп рджреНрд╡рд╛рд░рд╛ рддрд░реНрдХ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдореВрд▓реНрдп рджреНрд╡рд╛рд░рд╛ рд╡рд╛рдкрд╕реА рдкреНрд░рдХрд╛рд░, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдИ рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рд╣реИрдВред



рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред



рдЪреВрдВрдХрд┐ рд╣рдо рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╣рдо рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдкреВрд░реНрд╡рд╡рдд рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдпрд╣ рдПрдХ рддреБрдЪреНрдЫ рдХрд╛рд░реНрдп рд╣реИ: рд╣рдорд╛рд░реЗ рдкрд╛рд╕ std::vectorрд╡рд┐рднрд┐рдиреНрди рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рд╕рд╛рде рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреА рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рддрд┐рдпрд╛рдВ рд╣реИрдВред



рдорд╛рди рд▓реАрдЬрд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдпреВрдЖрдИ рд╣реИ, рдФрд░ рдЗрд╕рдХреА рдЬрд╡рд╛рдмрджреЗрд╣реА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпреВрдЖрдИ рдХреА рдореИрдкрд┐рдВрдЧ рдПрдХ рдЕрд▓рдЧ рдереНрд░реЗрдб рдореЗрдВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд╕рдВрджреЗрд╢ рджреНрд╡рд╛рд░рд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдмрд╛рддрдЪреАрдд рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рднреА рд╣реЛрддреА рд╣реИ, рди рдХрд┐ рд░рд╛рдЬреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ mutexesред рдЬрдм рджреВрд╕рд░реА рд╕реНрдЯреНрд░реАрдо рджреНрд╡рд╛рд░рд╛ рдХреЙрдкреА рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИ, рддреЛ рдЖрдк рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдЪрд╛рд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рдХрд┐рд╕реА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдбрд┐рд╕реНрдХ рдкрд░ рд╕рд╣реЗрдЬрдирд╛ рдЕрдХреНрд╕рд░ рдмрд╣реБрдд рдзреАрдорд╛ рд╣реЛрддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрдбрд╝рд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, std::asyncрдЗрд╕ рдСрдкрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдПрдХ рд▓реИрдореНрдмреНрдбрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдПрдХ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕рдХреЗ рдЕрдВрджрд░ рдПрдХ рд╕рдорд╛рди рдЪрд┐рд╣реНрди рдбрд╛рд▓рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдм рдЖрдк рдЕрдиреНрдп рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рдмрд┐рдирд╛ рдмрдЪрд╛ рд╕рдХрддреЗ рд╣реИрдВред



рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдзреНрд╡рдирд┐ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рд╡рд╛рд╣ рднреА рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдореИрдВрдиреЗ рд╕рдВрдЧреАрдд рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдзреНрд╡рдирд┐ рд╣рдорд╛рд░реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рдПрдХ рдФрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реИ, рдпрд╣ рдПрдХ рдЕрд▓рдЧ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рд╕реНрдЯреНрд░реАрдо рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреА рдПрдХ рдкреНрд░рддрд┐ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдирддреАрдЬрддрди, рд╣рдореЗрдВ рдмрд╣реБрдд рд╕реБрдВрджрд░, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдпрдерд╛рд░реНрдерд╡рд╛рджреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рдорд┐рд▓реАред



рдЗрд╕реЗ рд▓рдЧрд╛рддрд╛рд░ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЛ рдХреЙрдкреА рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рд░рджреНрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рд▓реЗрддрд╛ рд╣реИ, рдФрд░ рдпреВрдЖрдИ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреА рдПрдХ рдЧрд╣рд░реА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рднреА рдЗрдВрдЯрд░реИрдХреНрд╢рди рдмрд╣реБрдд рдорд╣рдВрдЧрд╛ рд╣реИрдВред



рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ C ++ рдбреЗрд╡рд▓рдкрд░ рдХреНрдпрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ? рдХрд┐рд╕реА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдорд╛рди рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдЬрд┐рдХ рдЕрдм рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдЗрд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдХреБрдЫ рднреА рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдм рд╣рдо рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ, рд╡рд╕реНрддреБрдУрдВ рдФрд░ рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдирдИ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИ: рдпрджрд┐ рд╕рд╛рдЭрд╛ рдкрд╣реБрдВрдЪ рд╡рд╛рд▓реЗ рд░рд╛рдЬреНрдп рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд▓рд┐рдВрдХ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ mutexред рдпрд╣ рдмреЗрд╣рдж рдорд╣рдВрдЧрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдЬреЗрдЯреНрд╕ рд╕реЗ рдПрдХ рдЕрддреНрдпрдВрдд рдЬрдЯрд┐рд▓ рдкреЗрдбрд╝ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдорд╛рд░реЗ рдпреВрдЖрдИ рдХрд╛ рдХреБрдЫ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реЛрдЧрд╛ред

рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдиреЗ рдкрд░ рдЗрди рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдкрд░рд┐рд╡рд░реНрддрди рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрддрд╛рд░рдмрджреНрдз рддрдВрддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ рдЕрдм рд░рд╛рдЬреНрдпреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдЯреАрдо рдкреИрдЯрд░реНрди рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛрдЧрд╛ред рдСрдкрд░реЗрд╢рди рдХреЛ рдПрдХ рджрд┐рд╢рд╛ рдФрд░ рджреВрд╕рд░реА рджрд┐рд╢рд╛ рдореЗрдВ рджреЛ рдмрд╛рд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рд╕рдордорд┐рдд рд╣реИред рдПрдХ рдЕрд▓рдЧ рдереНрд░реЗрдб рдореЗрдВ рд╕рд╣реЗрдЬрдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣реБрдд рдХрдард┐рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЫреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред



рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА hourglass рддрд╕реНрд╡реАрд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рд╡реЗ рдереЛрдбрд╝рд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдареАрдХ рд╣реИред рдПрдХ рдФрд░ рдмрд╛рдд рдбрд░рд╛рд╡рдиреА рд╣реИ - рдкрд╛рд╕реНрддрд╛ рд░рд╛рдХреНрд╖рд╕ рдЕрдм рд╣рдорд╛рд░реЗ рдХреЛрдб рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдХрд┐рд╕ рдмрд┐рдВрджреБ рдкрд░ рд╕рдм рдХреБрдЫ рдиреАрдЪреЗ рдЪрд▓рд╛ рдЧрдпрд╛? рд╣рдордиреЗ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдерд╛, рдФрд░ рдлрд┐рд░ рд╣рдореЗрдВ рдирдХрд▓ рдХреЗ рдХрд╛рд░рдг рд╕рдордЭреМрддрд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рд▓реЗрдХрд┐рди C ++ рдореЗрдВ, рдХреЗрд╡рд▓ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдорд╛рди рджреНрд╡рд╛рд░рд╛ рдкрд╛рд╕ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрджрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИ, рддреЛ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрдЯрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рд╕реВрдЪрдХ рдХреЛ рдЖрдВрддрд░рд┐рдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЛ рдХреЙрдкреА рдХрд░реЗ рдФрд░ рдХреБрдЫ рднреА рдирд╣реАрдВред

const auto v0 = vector<int>{};

рдПрдХ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рд╣рдорд╛рд░реА рдорджрдж рдХрд░ рд╕рдХреЗред рдиреАрдЪреЗ рд╡реЗрдХреНрдЯрд░ рдореЗрдВ, рд╕рднреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ const, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИред рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ .push_back, рд╡реЗрдХреНрдЯрд░ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдПрдХ рдирдпрд╛ рд╡реЗрдХреНрдЯрд░ рд╡рд╛рдкрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╣рдо рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рд╡рд░реНрдЧ рдХреЛрд╖реНрдардХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдХреИрд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ.setрдЬреЛ рдПрдХ рдЕрджреНрдпрддрди рдЖрдЗрдЯрдо рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рд▓реМрдЯрд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░реА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдЕрдм рдПрдХ рд╕рдВрдкрддреНрддрд┐ рд╣реИ рдЬрд┐рд╕реЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рджреГрдврд╝рддрд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ рдореЗрдВ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдЗрд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреБрд░рд╛рдиреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╣рдЯрд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ - рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╣рдорд╛рд░реА рджреБрдирд┐рдпрд╛ рдХрд╛ рдПрдХ рдирдпрд╛ рдХрд╛рдВрдЯрд╛ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рд╕рдВрд░рдЪрдирд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдо рдЕрддреАрдд рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рд╡рд░реНрддрдорд╛рди рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдпрд╣ рджреЛ рдХреА рдорджрдж рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ assertред

const auto v0 = vector<int>{};
const auto v1 = v0.push_back(15);
const auto v2 = v1.push_back(16);
const auto v3 = v2.set(0, 42);

assert(v2.size() == v0.size() + 2);
assert(v3[0] - v1[0] == 27);

рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЕрдм рд╕реАрдзреЗ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╡реЗ рдЕрдм рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдЫрд┐рдкреЗ рд╣реБрдП рдЧреБрдг рдирд╣реАрдВ рд╣реИрдВред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдореВрд▓реНрдпрд╡рд╛рди рд╣реИ рдЬрд╣рд╛рдВ рд╣рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рдбреЗрдЯрд╛ рдмрджрд▓рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред

рдПрдХ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрдкрддреНрддрд┐ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рд╕рд╛рдЭрд╛рдХрд░рдг рд╣реИред рдЕрдм рд╣рдо рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕рднреА рдбреЗрдЯрд╛ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдирд╣реАрдВ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред рдХреЗ рд╕рд╛рде рднреА .push_backрдФрд░.setрд╕рднреА рдбреЗрдЯрд╛ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдирд╣реАрдВ рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рд╣рдорд╛рд░реЗ рд╕рднреА рдХрд╛рдВрдЯреЛрдВ рдХреА рдПрдХ рдХреЙрдореНрдкреИрдХреНрдЯ рджреГрд╢реНрдп рддрдХ рдЖрдо рдкрд╣реБрдВрдЪ рд╣реИ, рдЬреЛ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЕрдиреБрдкрд╛рдд рдореЗрдВ рд╣реИ, рди рдХрд┐ рдкреНрд░рддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдПред рдпрд╣ рднреА рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ рдХрд┐ рддреБрд▓рдирд╛ рдмрд╣реБрдд рддреЗрдЬ рд╣реИ: рдпрджрд┐ рд╕рдм рдХреБрдЫ рдПрдХ рдореЗрдореЛрд░реА рдмреНрд▓реЙрдХ рдореЗрдВ, рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдмрд╕ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреА рддреБрд▓рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рдЕрдВрджрд░ рдореМрдЬреВрдж рддрддреНрд╡реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдпрджрд┐ рд╡реЗ рд╕рдорд╛рди рд╣реИрдВред

рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╡реЗрдХреНрдЯрд░ рдХреЗ рдмрд╛рдж рд╕реЗ, рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдЕрддреНрдпрдВрдд рдЙрдкрдпреЛрдЧреА рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИ: рдпрд╣ рдЙрдмрд╛рд▓ рд╣реИ - рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп, рдПрдХ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдкрд░рд┐рдпреЛрдЬрдирд╛ред

рдЗрд╕реЗ рд▓рд┐рдЦрддреЗ рд╕рдордп, рдореИрдВ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ C ++ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛред рдХрдИ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ рдЬреЛ C ++ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдзрд╛рд░рдгрд╛ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╣рд╛рд╕реНрдХреЗрд▓ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдФрд░ рд╕реА ++ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред рдЗрд╕рд╕реЗ рдЕрд╕реБрд╡рд┐рдзрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВрдиреЗ рдЕрдЪреНрдЫрд╛ рдкреНрд░рджрд░реНрд╢рди рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ред рдЬрдм рдЙрдкрд▓рдмреНрдз рд╕рдВрд╕рд╛рдзрди рд╕реАрдорд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рддреЛ рд▓реЛрдЧ C ++ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЕрдиреБрдХреВрд▓рди рдпреЛрдЧреНрдп рд╣реЛред рдпрд╣ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкреНрд░рджрд░реНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред

рдПрдХ рдЬрд╛рджреВ рд╡реЗрдХреНрдЯрд░ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ


рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡реЗрдХреНрдЯрд░ рдХреИрд╕реЗ рд╕рдВрд░рдЪрд┐рдд рд╣реИред рдРрд╕реА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдПрдХ рдирд┐рдпрдорд┐рдд рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рд╕реНрдк рдпрд╛ рд╣рд╛рд╕реНрдХреЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рд╕реЗ рдереЛрдбрд╝рд╛ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рддреЛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╕реВрдЪреА рд╕рдмрд╕реЗ рдЖрдо рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рд╣реИрдВред



рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реВрдЪреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдиреЛрдб рд╣реИ ред рдирдП рддрддреНрд╡реЛрдВ рдХреЛ рд╕реВрдЪреА рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЬреЛрдбрд╝рддреЗ рд╕рдордп, рдирдП рдиреЛрдб рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдПрдХ рдореМрдЬреВрджрд╛ рдиреЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╕реНрд▓рд╛рдЗрдб рдкрд░ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реВрдЪреА рдХреА рддреАрди рдкреНрд░рддрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реНрдореГрддрд┐ рдореЗрдВ рддреАрди рддрддреНрд╡ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, v1рд╡реЗ v0рд╡рд┐рднрд┐рдиреНрди рддрддреНрд╡реЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВред



рд╣рдо рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдХрд╛ рдПрдХ рдХрд╛рдВрдЯрд╛ рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН, рдПрдХ рдирдИ рд╕реВрдЪреА рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╣реА рдЕрдВрдд рд╣реЛ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрд▓рдЧ рд╢реБрд░реБрдЖрддред

рдРрд╕реЗ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдХреНрд░рд┐рд╕ рдУрдХрд╛рд╕рд╛рдХреА рдиреЗ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдореМрд▓рд┐рдХ рдХрд╛рдо рд▓рд┐рдЦрд╛ рдерд╛ ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, Ralf Hinze рдФрд░ Ross Paterson рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдлрд╝рд┐рдВрдЧрд░ рдЯреНрд░реА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ ред рд▓реЗрдХрд┐рди рд╕реА ++ рдХреЗ рд▓рд┐рдП, рдРрд╕реА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВред рд╡реЗ рдЫреЛрдЯреЗ рдиреЛрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ C ++ рдореЗрдВ рдЫреЛрдЯреЗ рдиреЛрдбреНрд╕ рдХрд╛ рдорддрд▓рдм рдХреИрд╢рд┐рдВрдЧ рджрдХреНрд╖рддрд╛ рдХреА рдХрдореА рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡реЗ рдЕрдХреНрд╕рд░ рдРрд╕реЗ рдЧреБрдгреЛрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ C ++ рдХреЗ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдЖрд▓рд╕реНрдпред рдЗрд╕рд▓рд┐рдП, рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдкрд░ рдлрд┐рд▓ рдмреИрдЧрд╡реЗрд▓ рдХрд╛ рдХрд╛рдо рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд╣реИ - 2000 рдХреЗ рджрд╢рдХ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд▓рд┐рдВрдХ , рд╕рд╛рде рд╣реА рд░рд┐рдЪ рд╣рд┐рдХреА рдХрд╛ рдХрд╛рдо - рд▓рд┐рдВрдХ, рдХреНрд▓реЛрдЬрд░ рдХреЗ рд▓реЗрдЦрдХред рд░рд┐рдЪ рд╣рд┐рдХреА рдиреЗ рдПрдХ рд╕реВрдЪреА рдмрдирд╛рдИ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕реВрдЪреА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдзреБрдирд┐рдХ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ: рд╡реИрдХреНрдЯрд░ рдФрд░ рд╣реИрд╢ рдореИрдкред рдЗрди рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдореЗрдВ рдХреИрд╢рд┐рдВрдЧ рджрдХреНрд╖рддрд╛ рд╣реИ рдФрд░ рдЖрдзреБрдирд┐рдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдмрд╛рддрдЪреАрдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЫреЛрдЯреЗ рдиреЛрдбреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЕрд╡рд╛рдВрдЫрдиреАрдп рд╣реИред рдРрд╕реА рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ C ++ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдПрдХ рдкреНрд░рддрд┐рд░рдХреНрд╖рд╛ рд╡реЗрдХреНрдЯрд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХреИрд╕реЗ рдХрд░реЗрдВ? рдХрд┐рд╕реА рднреА рд╕рдВрд░рдЪрдирд╛ рдХреЗ рджрд┐рд▓ рдореЗрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рд╡реЗрдХреНрдЯрд░ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рдПрдХ рд╕рд░рдгреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рд╕рд░рдгреА рдореЗрдВ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рд╕рд╛рдЭрд╛рдХрд░рдг рдирд╣реАрдВ рд╣реИред рд╕рд░рдгреА рдХреЗ рдХрд┐рд╕реА рднреА рддрддреНрд╡ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рджреГрдврд╝рддрд╛ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЦреЛрдиреЗ рдХреЗ рдмрд┐рдирд╛, рдЖрдкрдХреЛ рдкреВрд░реЗ рд╕рд░рдгреА рдХреЛ рдХреЙрдкреА рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рд░рдгреА рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЕрдм, рд╡реЗрдХреНрдЯрд░ рддрддреНрд╡ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╕рдордп, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдЯреБрдХрдбрд╝реЗ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рди рдХрд┐ рдкреВрд░реЗ рд╡реЗрдХреНрдЯрд░ рдХреАред рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рдЯреБрдХрдбрд╝реЗ рдЦреБрдж рдПрдХ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдирд╣реАрдВ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдПрдХ рддрд░рд╣ рд╕реЗ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрдиреНрд╣реЗрдВ рджреВрд╕рд░реЗ рд╕рд░рдгреА рдореЗрдВ рд░рдЦреЗрдВред рдПрдХ рдмрд╛рд░ рдлрд┐рд░, рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдЙрдарддреА рд╣реИ рдХрд┐ рд╕рд░рдгреА рдмрд╣реБрдд рдмрдбрд╝реА рд╣реЛ рд╕рдХрддреА рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдХреЙрдкреА рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧреЗрдЧрд╛ред

рд╣рдо рдЗрд╕ рд╕рд░рдгреА рдХреЛ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдлрд┐рд░ рд╕реЗ рдПрдХ рдЕрд▓рдЧ рд╕рд░рдгреА рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рд░реВрдЯ рд╕рд░рдгреА рди рд╣реЛред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЕрд╡рд╢рд┐рд╖реНрдЯ рд╡реГрдХреНрд╖ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╡реГрдХреНрд╖ рдХрд╛ рд╡рд░реНрдгрди рдирд┐рд░рдВрддрд░ M = 2B, рдпрд╛рдиреА рдмреНрд░рд╛рдВрдЪрд┐рдВрдЧ рдХрд╛рд░рдХ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╢рд╛рдЦрд╛ рд╕реВрдЪрдХ рджреЛ рдХреА рд╢рдХреНрддрд┐ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдФрд░ рд╣рдо рдмрд╣реБрдд рдЬрд▓реНрдж рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдПрдВрдЧреЗ рдХрд┐ рдХреНрдпреЛрдВред рд╕реНрд▓рд╛рдЗрдб рдкрд░ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЪрд╛рд░ рд╡рд░реНрдгреЛрдВ рдХреЗ рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, 32 рд╡рд░реНрдгреЛрдВ рдХреЗ рдмреНрд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдРрд╕реЗ рдкреНрд░рдпреЛрдЧ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд╕рд╛рде рдЖрдк рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рд▓рд┐рдП рдЗрд╖реНрдЯрддрдо рдмреНрд▓реЙрдХ рдЖрдХрд╛рд░ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЖрдкрдХреЛ рд╕рдордп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рд╕рд╛рдЭрд╛ рдкрд╣реБрдВрдЪ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЕрдиреБрдкрд╛рдд рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ: рдХрдо рдкреЗрдбрд╝, рдХрдо рдкрд╣реБрдВрдЪ рд╕рдордпред

рдЗрд╕реЗ рдкрдврд╝рдХрд░, C ++ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╢рд╛рдпрдж рд╕реЛрдЪрддреЗ рд╣реИрдВ: рд▓реЗрдХрд┐рди рдХреЛрдИ рднреА рдкреЗрдбрд╝-рдЖрдзрд╛рд░рд┐рдд рд╕рдВрд░рдЪрдирд╛ рдмрд╣реБрдд рдзреАрдореА рд╣реИ! рдкреЗрдбрд╝ рдЙрди рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде рдмрдврд╝рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, рдкрд╣реБрдВрдЪ рдХрд╛ рд╕рдордп рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ std::unordered_map, рдмрдЬрд╛рдп std::mapред рдореИрдВ рдЖрдкрдХреЛ рдЖрд╢реНрд╡рд╕реНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд▓реНрджрдмрд╛рдЬреА рдХрд░рддрд╛ рд╣реВрдВ: рд╣рдорд╛рд░рд╛ рдкреЗрдбрд╝ рдмрд╣реБрдд рдзреАрд░реЗ-рдзреАрд░реЗ рдмрдврд╝рддрд╛ рд╣реИред 32-рдмрд┐рдЯ рдЗрдВрдЯ рдХреЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдорд╛рдиреЛрдВ рд╡рд╛рд▓рд╛ рдПрдХ рд╡реЗрдХреНрдЯрд░ рдХреЗрд╡рд▓ 7 рд╕реНрддрд░ рдКрдВрдЪрд╛ рд╣реИред рдпрд╣ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдбреЗрдЯрд╛ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде, рд▓реЛрдб рдорд╛рддреНрд░рд╛ рдореЗрдВ рдХреИрд╢ рдХрд╛ рдЕрдиреБрдкрд╛рдд рдкреЗрдбрд╝ рдХреА рдЧрд╣рд░рд╛рдИ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдХрд╛рдлреА рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХрд┐рд╕реА рдкреЗрдбрд╝ рдХреЗ рддрддреНрд╡ рддрдХ рдкрд╣реБрдВрдЪ рдХреИрд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИред рдорд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдкрдХреЛ рддрддреНрд╡ 17 рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рдПрдХ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЛ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдПрдХ рд╢рд╛рдЦрд╛ рдХрд╛рд░рдХ рдХрд╛ рдЖрдХрд╛рд░ред



рдкреНрд░рддреНрдпреЗрдХ рд╕рдореВрд╣ рдореЗрдВ, рд╣рдо рд╕рдВрдмрдВрдзрд┐рдд рдмрд╛рдЗрдирд░реА рд╡реИрд▓реНрдпреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкреЗрдбрд╝ рдХреЗ рдиреАрдЪреЗ рдЬрд╛рддреЗ рд╣реИрдВред
рдЕрдЧрд▓рд╛, рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд, рд╡рд┐рдзрд┐ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ .setред



рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдЙрд╕ рдмреНрд▓реЙрдХ рдХреЛ рдХреЙрдкреА рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рддрддреНрд╡ рд╕реНрдерд┐рдд рд╣реИ, рдФрд░ рдлрд┐рд░ рддрддреНрд╡ рдХреЗ рд░рд╛рд╕реНрддреЗ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдЖрдВрддрд░рд┐рдХ рдиреЛрдб рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБред рдПрдХ рддрд░рдл, рдмрд╣реБрдд рд╕рд╛рд░реЗ рдбреЗрдЯрд╛ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдИ рдЬрд╛рдиреА рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЗрд╕ рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рдЖрдо рд╣реИ, рдпрд╣ рдЙрдирдХреА рдорд╛рддреНрд░рд╛ рдХреЗ рд▓рд┐рдП рдХреНрд╖рддрд┐рдкреВрд░реНрддрд┐ рдХрд░рддрд╛ рд╣реИред

рд╡реИрд╕реЗ, рдПрдХ рдмрд╣реБрдд рдкреБрд░рд╛рдиреА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╣реИ рдЬреЛ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдХреЗ рд╕рдорд╛рди рд╣реИред рдпреЗ рдПрдХ рдкреЗрдЬ рдЯреЗрдмрд▓ рдЯреНрд░реА рдХреЗ рд╕рд╛рде рдореЗрдореЛрд░реА рдкреЗрдЬ рд╣реИрдВред рдЙрд╕рдХрд╛ рдкреНрд░рдмрдВрдзрди рднреА рдПрдХ рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ forkред

рдЖрдЗрдП рд╣рдорд╛рд░реА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рд╣рдореЗрдВ рджреЛ рд╡реИрдХреНрдЯрд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдЕрдм рддрдХ рд╡рд░реНрдгрд┐рдд рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреА рд╕рдорд╛рди рд╕реАрдорд╛рдПрдВ рд╣реИрдВ std::vector:рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рд╕рдмрд╕реЗ рджрд╛рд╣рд┐рдиреЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рд░рд┐рдХреНрдд рдХреЛрд╢рд┐рдХрд╛рдПрдВ рд╣реИрдВред рдЪреВрдВрдХрд┐ рд╕рдВрд░рдЪрдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрддреБрд▓рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпреЗ рдЦрд╛рд▓реА рдХреЛрд╢рд┐рдХрд╛рдПрдВ рдкреЗрдбрд╝ рдХреЗ рдмреАрдЪ рдореЗрдВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЕрдЧрд░ рдПрдХ рджреВрд╕рд░рд╛ рд╡реЗрдХреНрдЯрд░ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдкрд╣рд▓реЗ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЛ рдЦрд╛рд▓реА рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдХреЙрдкреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЬреЛ рджреВрд╕рд░реЗ рд╡реЗрдХреНрдЯрд░ рдореЗрдВ рдЦрд╛рд▓реА рд╕реЗрд▓ рдмрдирд╛рдПрдВрдЧреЗ, рдФрд░ рдЕрдВрдд рдореЗрдВ рд╣рдореЗрдВ рдкреВрд░реЗ рджреВрд╕рд░реЗ рд╡реЗрдХреНрдЯрд░ рдХреЛ рдХреЙрдкреА рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдСрдкрд░реЗрд╢рди рдореЗрдВ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЬрдЯрд┐рд▓рддрд╛ рдУ (рдПрди) рд╣реИ, рдЬрд╣рд╛рдВ рдПрди рджреВрд╕рд░реЗ рд╡реЗрдХреНрдЯрд░ рдХрд╛ рдЖрдХрд╛рд░ рд╣реИред

рд╣рдо рдмреЗрд╣рддрд░ рдкрд░рд┐рдгрд╛рдо рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдПрдХ рд╕рдВрд╢реЛрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдЬрд┐рд╕реЗ рд░рд┐рд▓реИрдХреНрд╕ рд░реЗрдбрд┐рдХреНрд╕ рд╕рдВрддреБрд▓рд┐рдд рдкреЗрдбрд╝ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ, рдиреЛрдбреНрд╕ рдЬреЛ рдмрд╛рдПрдВ-рд╕рдмрд╕реЗ рдкрде рдкрд░ рдирд╣реАрдВ рд╣реИрдВ, рдЙрдирдореЗрдВ рдЦрд╛рд▓реА рдХрдХреНрд╖ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдРрд╕реЗ рдЕрдкреВрд░реНрдг (рдпрд╛ рдЖрд░рд╛рдо рд╕реЗ) рдиреЛрдбреНрд╕ рдореЗрдВ, рдЙрдкрд╢реАрд░реНрд╖рдХ рдХреЗ рдЖрдХрд╛рд░ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЕрдм рдЖрдк рдПрдХ рдЬрдЯрд┐рд▓ рд▓реЗрдХрд┐рди рд▓реЙрдЧрд░рд┐рджрдорд┐рдХ рдЬреБрдбрд╝рд╛рд╡ рдСрдкрд░реЗрд╢рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдирд┐рд░рдВрддрд░ рд╕рдордп рдЬрдЯрд┐рд▓рддрд╛ рдХрд╛ рдпрд╣ рд╕рдВрдЪрд╛рд▓рди рд╣реЗ (рд▓реЙрдЧ (32))ред рдЪреВрдВрдХрд┐ рдкреЗрдбрд╝ рдЙрдерд▓реЗ рд╣реИрдВ, рдкрд╣реБрдВрдЪ рдХрд╛ рд╕рдордп рд╕реНрдерд┐рд░ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд▓рдВрдмрд╛ рд╣реИред рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рд╕рдВрдШ рд╕рдВрдЪрд╛рд▓рди рд╣реИ, рдЗрд╕ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдПрдХ рдЖрд░рд╛рдо рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рдВрдЧрдо рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ: рдирд┐рд░рдВрддрд░ рд╣реЛрдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдФрд░ рдЖрдк рдЗрд╕реЗ рдХрд╛рдВрдЯрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рджреЛ рдРрд╕реА рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рдПрдХ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред



рдЕрдм рддрдХ рд╣рдордиреЗ рдЬрд┐рд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рдЙрд╕рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдмрд╣реБрдд рд╕рд╛рдл-рд╕реБрдерд░реА рд╣реИ, рд▓реЗрдХрд┐рди рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдХреНрд▓реЛрдЬрд░ рдФрд░ рдЕрдиреНрдп рдХрд╛рд░реНрдпрд╛рддреНрдордХ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрд▓рдЧ рджрд┐рдЦрддреЗ рд╣реИрдВред рд╡реЗ рдкреНрд░рддреНрдпреЗрдХ рдорд╛рди рдХреЗ рд▓рд┐рдП рдХрдВрдЯреЗрдирд░ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, рд╡реЗрдХреНрдЯрд░ рдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдПрдХ рдЕрд▓рдЧ рд╕реЗрд▓ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд▓реАрдл рдиреЛрдбреНрд╕ рдореЗрдВ рдЗрди рддрддреНрд╡реЛрдВ рдХреЗ рд╕рдВрдХреЗрдд рд╣реЛрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдмреЗрд╣рдж рдЕрдХреНрд╖рдо рд╣реИ, рд╕реА ++ рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдореВрд▓реНрдп рдХреЛ рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдирд╣реАрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдХрд┐ рдпреЗ рддрддреНрд╡ рд╕реАрдзреЗ рдиреЛрдбреНрд╕ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрдВред рдлрд┐рд░ рдПрдХ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ: рд╡рд┐рднрд┐рдиреНрди рддрддреНрд╡реЛрдВ рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрдХрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВред рдпрджрд┐ рддрддреНрд╡ рдкреЙрдЗрдВрдЯрд░ рдХреЗ рд╕рдорд╛рди рдЖрдХрд╛рд░ рдХрд╛ рд╣реИ, рддреЛ рд╣рдорд╛рд░реА рд╕рдВрд░рдЪрдирд╛ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдП рдЧрдП рдХреА рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:



рд▓реЗрдХрд┐рди рдЕрдЧрд░ рддрддреНрд╡ рдмрдбрд╝реЗ рд╣реИрдВ, рддреЛ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдЙрди рдЧреБрдгреЛрдВ рдХреЛ рдЦреЛ рджреЗрддреА рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдордиреЗ рдорд╛рдкрд╛ рдерд╛ (рдПрдХреНрд╕реЗрд╕ рдЯрд╛рдЗрдо рдУ (рд▓реЙрдЧ (32) ()), рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рдПрдХ рд╢реАрдЯ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рддрд╛рдХрд┐ рдЖрдХрд╛рд░ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реЛред рдЗрд╕рдореЗрдВ рдирд┐рд╣рд┐рдд рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрддреНрддреА рдХреЗ рдиреЛрдбреНрд╕ рдореЗрдВ рдЗрди рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХрдореА рдЖрдИред рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрджрд┐ рддрддреНрд╡ рдЫреЛрдЯреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рдЕрдм рдЕрдзрд┐рдХ рдлрд┐рдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдкреЗрдбрд╝ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдореВрд▓рд╛рдВрдХ рд╕рдВрддреБрд▓рд┐рдд рд╡реГрдХреНрд╖ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рд░ рд╕реЗ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рджреЛ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╣реИ: рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рд╡рд░реНрдгрди рд╣реИ рдЖрдВрддрд░рд┐рдХ рдиреЛрдбреНрд╕, рдФрд░ рджреВрд╕рд░рд╛ - рдкрддреНрддреЗрджрд╛рд░ .. рд╕реА ++ рдореЗрдВ рдкреЗрдбрд╝ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрд┐рдВрджреБ рдХреЗ рдЖрдХрд╛рд░ рдФрд░ рддрддреНрд╡реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкрддреНрддреА рддрддреНрд╡ рдХреЗ рдЗрд╖реНрдЯрддрдо рдЖрдХрд╛рд░ рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рдорд╛рд░рд╛ рдкреЗрдбрд╝ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЕрднреА рднреА рдмреЗрд╣рддрд░ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рдорд╛рди рдлрд╝рдВрдХреНрд╢рди рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ iota:

vector<int> myiota(vector<int> v, int first, int last)
{
    for (auto i = first; i < last; ++i)
        v = v.push_back(i);
    return v;
}

рдпрд╣ рдПрдХ рдЗрдирдкреБрдЯ рд▓реЗрддрд╛ рд╣реИ vector, push_backрдкреНрд░рддреНрдпреЗрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдХреЗ рдмреАрдЪ рд╡реЗрдХреНрдЯрд░ рдХреЗ рдЕрдВрдд рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИ firstрдФрд░ last, рдФрд░ рдЬреЛ рд╣реБрдЖ рдЙрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреА рд╢реБрджреНрдзрддрд╛ рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рдХреНрд░рдо рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдХреНрд╖рдо рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ push_backрдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рд╕рдмрд╕реЗ рдмрд╛рдИрдВ рдУрд░ рдХреА рдкреНрд░рддрд┐рдпреЛрдВ рдХреЛ рдХреЙрдкреА рдХрд░рддреА рд╣реИ: рдЕрдЧрд▓реА рдХреЙрд▓ рдХрд┐рд╕реА рдЕрдиреНрдп рддрддреНрд╡ рдХреЛ рдзрдХреНрдХрд╛ рджреЗрддреА рд╣реИ рдФрд░ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдлрд┐рд░ рд╕реЗ рджреЛрд╣рд░рд╛рдИ рдЬрд╛рддреА рд╣реИ, рдФрд░ рдкрд┐рдЫрд▓реА рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдбреЗрдЯрд╛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЖрдк рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдПрдХ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдлрд╝рдВрдХреНрд╢рди рдХреЗ рднреАрддрд░ рджреГрдврд╝рддрд╛ рдХрд╛ рддреНрдпрд╛рдЧ рдХрд░рддреЗ рд╣реИрдВред transient vectorрдПрдХ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддреА рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдирд┐рдпрдорд┐рдд рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реИ vectorред рдРрд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рднреАрддрд░, рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ push_backрдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИред

vector<int> myiota(vector<int> v, int first, int last)
{
    auto t = v.transient();
    for (auto i = first; i < last; ++i)
        t.push_back(i);
    return t.persistent();
}

рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реИ, рдФрд░ рдпрд╣ рдЖрдкрдХреЛ рд╕рд╣реА рдкрде рдкрд░ рдирдП рддрддреНрд╡реЛрдВ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрдд рдореЗрдВ, рдПрдХ рдХреЙрд▓ рдХрд┐рдпрд╛ .persistent()рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд░рд┐рдЯрд░реНрди рджреЗрддрд╛ рд╣реИ vectorред рд╕рдВрднрд╛рд╡рд┐рдд рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рд╕рдорд╛рд░реЛрд╣ рдХреЗ рдмрд╛рд╣рд░ рд╕реЗ рдЕрджреГрд╢реНрдп рд░рд╣рддреЗ рд╣реИрдВред рдореВрд▓ рдПрдХ vectorрдерд╛ рдФрд░ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд░рд╣рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдмрдирд╛рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк std::back_inserterрдорд╛рдирдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдЙрддреНрдкрд░рд┐рд╡рд░реНрддреА рдПрдкреАрдЖрдИ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдПрдХ рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

vector<char> say_hi(vector<char> v)
{
    return v.push_back('h')        
            .push_back('i')        
            .push_back('!');       
}

рдлрд╝рдВрдХреНрд╢рди рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрддрд╛ рд╣реИ vector, рд▓реЗрдХрд┐рди рдХреЙрд▓ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдЕрдВрджрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ push_backред рдпрд╣рд╛рдВ, рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдХреА рддрд░рд╣, рдХреЙрд▓ рдХреЗ рдЕрдВрджрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдирдХрд▓ рд╣реЛ рд╕рдХрддреА рд╣реИ push_backред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдкрд╣рд▓рд╛ рдореВрд▓реНрдп push_backрдирд╛рдорд┐рдд рдореВрд▓реНрдп рд╣реИ, рдФрд░ рдмрд╛рдХреА рдЖрд░-рдореВрд▓реНрдп рд╣реИ, рдЕрд░реНрдерд╛рдд рдЕрдирд╛рдо рд▓рд┐рдВрдХред рдпрджрд┐ рдЖрдк рд╕рдВрджрд░реНрдн рдЧрд┐рдирддреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡рд┐рдзрд┐ push_backрдиреЛрдбреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн рдХрд╛рдЙрдВрдЯрд░ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреА рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╕реНрдореГрддрд┐ рдХреЛ рдкреЗрдбрд╝ рдореЗрдВ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдФрд░ рдЖрд░-рдореВрд▓реНрдп рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрджрд┐ рд▓рд┐рдВрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдПрдХ рд╣реИ, рддреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдХреЛрдИ рдЕрдиреНрдп рд╣рд┐рд╕реНрд╕рд╛ рдЗрди рдиреЛрдбреНрд╕ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдкреНрд░рджрд░реНрд╢рди рдмрд┐рд▓реНрдХреБрд▓ рд╡реИрд╕рд╛ рд╣реА рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реИ transientред

vector<char> say_hi(vector<char> v)
{
    return v.push_back('h')        тЯ╡ named value: v
            .push_back('i')        тЯ╡ r-value value
            .push_back('!');       тЯ╡ r-value value
}

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдВрдХрд▓рдХ рдХреА рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ move(v), рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ vрдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХрд╣реАрдВ рдФрд░ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓рд╛рдн рдерд╛, рдЬреЛ transientрд╡реИрд░рд┐рдПрдВрдЯ рдореЗрдВ рдирд╣реАрдВ рдерд╛ : рдпрджрд┐ рд╣рдо Say_hi рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ say_hi рдХрд╛ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ рдорд╛рди рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рддрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реЛрдВрдЧреАред рд╕реА рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, transientрдРрд╕реА рд╕реАрдорд╛рдПрдВ рд╣реИрдВ рдЬрд┐рди рдкрд░ рдЕрдзрд┐рдХ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдерд╛рдпреА, рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рд╕рд╛рдЭрд╛ рдкрд╣реБрдВрдЪ рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рддреНрд░рд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рд╕рд╛рдЭрд╛рдХрд░рдг рдирд╣реАрдВ рд╣реИ, рддреЛ рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдПрдХ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рдорд╛рди рд╣реЛрдЧрд╛ред рдпрд╣ рдПрдХ рдЕрддреНрдпрдВрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрдкрддреНрддрд┐ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдЬреЛ рдореИрдВрдиреЗ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╣реА рджрд┐рдЦрд╛рдпрд╛ рдерд╛, рдЙрд╕реЗ рдПрдХ рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ move(v)ред

vector<int> myiota(vector<int> v, int first, int last)
{
    for (auto i = first; i < last; ++i)
        v = std::move(v).push_back(i);
    return v;
}

рдЕрдм рддрдХ рд╣рдордиреЗ рд╡реИрдХреНрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рд╣реИ, рдФрд░ рдЙрдирдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╣реИрд╢ рдХреЗ рдирдХреНрд╢реЗ рднреА рд╣реИрдВред рд╡реЗ рдлрд┐рд▓ рдиреИрд╢: рдж рдкрд╡рд┐рддреНрд░ рдЧреНрд░реИрдм рджреНрд╡рд╛рд░рд╛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИрдВ ред C ++ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реИрд╢ рд╕рд░рдгреА рдореИрдк рдХреА рдЧрдИ рддреНрд░рд┐ ред рдпрд╣ рдЙрдиреНрд╣реАрдВ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд▓рд╛рдЧреВ рдХреА рдЧрдИ рд╣реИрд╢ рдЯреЗрдмрд▓ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВрдиреЗ рдЕрднреА рдмрд╛рдд рдХреА рд╣реИред

рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЖрдк рдореЗрдВ рд╕реЗ рдХрдИ рдХреЛ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрджреЗрд╣ рд╣реИред рдХреНрдпрд╛ рд╡реЗ рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рдЬрд▓реНрджреА рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ? рдореИрдВрдиреЗ рдХрдИ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рд╣реИрдВ, рдФрд░ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдореЗрд░рд╛ рдЙрддреНрддрд░ рд╣рд╛рдВ рдореЗрдВ рд╣реИред рдпрджрд┐ рдЖрдк рдкрд░реАрдХреНрд╖рд╛ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рдореЗрд░реЗ рд▓реЗрдЦ рдореЗрдВ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдп рд╕рдореНрдореЗрд▓рди 2017 рдХреЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реБрдП рд╣реИрдВред рдЕрдм, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдпрд╣ рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рдирд┐рд░рдкреЗрдХреНрд╖ рдореВрд▓реНрдпреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рди рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдкреНрд░рднрд╛рд╡ рдкреВрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдкрдбрд╝рддрд╛ рд╣реИред рдмреЗрд╢рдХ, рд╣рдорд╛рд░реЗ рд╡реЗрдХреНрдЯрд░ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдзреАрдорд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдХрдИ рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ рдХреЙрдкреА рдХрд░рдиреЗ рдФрд░ рдЕрдиреНрдп рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рд╕рджрд┐рд╢ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рддреЗ рд╣реБрдП рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд▓рдЧрднрдЧ рдЙрд╕реА рдЧрддрд┐ рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдбреЗрдЯрд╛ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдзреАрдореЗ рдЕрдкрдбреЗрдЯ рдХреЗ рдХрд╛рд░рдг, рдХреБрдЫ рднреА рдХреЙрдкреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреЗрд╡рд▓ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдИ рдЧрдИ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╡реЗрдХреНрдЯрд░ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрдиреЗ рд╡рд╛рд▓рд╛ рд╕рдордп, рдЬреИрд╕рд╛ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рджреА рдЧрдИ рд╕рднреА рдкреНрд░рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рд╢реЛрдзрд┐рдд рдерд╛, рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдЗрд╕ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдореЗрдВ рдЙрд╕реА рдХреЗ рд╕рдорд╛рди рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рд░рд┐рдкреЛрд░реНрдЯ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдерд╛, рддреЛ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдХрд╛рдлреА рд╡реГрджреНрдзрд┐ рд╣реЛрдЧреАред

Ewig


рдореИрдВ рдирд┐рд░рд╛рдзрд╛рд░ рдирд╣реАрдВ рд░рд╣реВрдБрдЧрд╛ рдФрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреА рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реВрдБрдЧрд╛ред рдореИрдВрдиреЗ рдПрдХ рдЫреЛрдЯрд╛ рдкрд╛рда рд╕рдВрдкрд╛рджрдХ рд▓рд┐рдЦрд╛ рдерд╛ред рдпрд╣ рдПрдХ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдЙрдкрдХрд░рдг рд╣реИ рдЬрд┐рд╕реЗ рдЗрд╡рд┐рдЧ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ , рдЬрд┐рд╕рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЛ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╡реИрдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдореЗрд░реА рдбрд┐рд╕реНрдХ рдкрд░ рдкреВрд░реЗ рдПрд╕реНрдкреЗрд░рд╛рдиреНрддреЛ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдХреА рдПрдХ рдкреНрд░рддрд┐ рд╣реИ, рдЗрд╕рдХрд╛ рд╡рдЬрди 1 рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рд╣реИ (рдкрд╣рд▓реЗ рдореИрдВ рдЕрдВрдЧреНрд░реЗрдЬреА рд╕рдВрд╕реНрдХрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реИ)ред рдЬреЛ рднреА рдЯреЗрдХреНрд╕реНрдЯ рдПрдбрд┐рдЯрд░ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рд╡рд╣ рдЗрд╕ рдлрд╛рдЗрд▓ рдХреЛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдФрд░ рдЬрдм рдЖрдк рдЗрд╕ рдлрд╛рдЗрд▓ рдХреЛ ewig рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ , рддреЛ рдЖрдк рддреБрд░рдВрдд рдЗрд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдбрд╛рдЙрдирд▓реЛрдб рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реИред рдлрд╝рд╛рдЗрд▓ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХреБрдЫ рднреА рд▓рдЯрдХрд╛ рдирд╣реАрдВ mutex, рдирд╣реАрдВ, рдХреЛрдИ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдирд╣реАрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреЛрдб рдХреА 20 рдорд┐рд▓рд┐рдпрди рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВред

рдЗрд╕ рдЙрдкрдХрд░рдг рдХреЗ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЧреБрдгреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рдПрдХ рдордЬреЗрджрд╛рд░ рд╡рд┐рд╡рд░рдг рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред



рд▓рд╛рдЗрди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдЫрд╡рд┐ рдХреЗ рдиреАрдЪреЗ рд╕рдлреЗрдж рд░рдВрдЧ рдореЗрдВ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЖрдк рджреЛ рд╣рд╛рдЗрдлрд╝рди рджреЗрдЦрддреЗ рд╣реИрдВред рдпрд╣ UI рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ emacs рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкрд░рд┐рдЪрд┐рдд рд╣реИ; рд╣рд╛рдЗрдлрд╝рди рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХреЛрдИ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рд╛рдЗрдлрд╝рди рдХреЗ рдмрдЬрд╛рдп рддрд╛рд░рд╛рдВрдХрди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди, рдЕрдиреНрдп рд╕рдВрдкрд╛рджрдХреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрджрд┐ рдЖрдк рдИрд╡реАрдЬреА рдореЗрдВ рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ (рдЗрд╕реЗ рдкреВрд░реНрд╡рд╡рдд рди рдХрд░реЗрдВ, рдмрд╕ рдЗрд╕реЗ рд╣рдЯрд╛ рджреЗрдВ), рддреЛ рддрд╛рд░рд╛рдВрдХрди рдХреЗ рдмрдЬрд╛рдп рд╣рд╛рдЗрдлрд╝рди рдлрд┐рд░ рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдкрд╛рда рдХреЗ рд╕рднреА рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдИрд╡рд┐рдЧ рдореЗрдВ рд╕рд╣реЗрдЬреЗ рдЧрдП рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдПрдХ рд╡рд┐рд╢реЗрд╖ рдзреНрд╡рдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ: рдореВрд▓ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред

рдЙрдкрдХрд░рдг рдХреЗ рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдЧреБрдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ: рдкреВрд░реЗ рдкрд╛рда рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБ рдФрд░ рдЗрд╕реЗ рдореМрдЬреВрджрд╛ рдкрд╛рда рдХреЗ рдмреАрдЪ рдореЗрдВ рдХреБрдЫ рдмрд╛рд░ рдЪрд┐рдкрдХрд╛рдПрдБред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рддреБрд░рдиреНрдд рд╣реЛрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рд╡реИрдХреНрдЯрд░ рд╕реЗ рдЬреБрдбрд╝рдирд╛ рдПрдХ рд▓реЙрдЧрд░рд┐рджрдорд┐рдХ рдСрдкрд░реЗрд╢рди рд╣реИ рдФрд░ рдХрдИ рд▓рд╛рдЦреЛрдВ рд▓реЛрдЧреЛрдВ рдХрд╛ рд▓реЙрдЧрд░рд┐рдердо рдЗрддрдирд╛ рд▓рдВрдмрд╛ рдСрдкрд░реЗрд╢рди рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕ рд╡рд┐рд╢рд╛рд▓ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдЕрдкрдиреА рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ рдореЗрдВ рд╕рд╣реЗрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧреЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдкрд╛рда рдЕрдм рдЗрд╕ рд╡реЗрдХреНрдЯрд░ рдХреЗ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╡реЗрдХреНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдбрд┐рд╕реНрдХ рдХреЛ рд╕рд╣реЗрдЬрддреЗ рд╕рдордп, рдХреНрд░рдордмрджреНрдзрддрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рджреГрдврд╝рддрд╛ рдЦреЛ рдЬрд╛рддреА рд╣реИред

рдореВрд▓реНрдп-рдЖрдзрд╛рд░рд┐рдд рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдкрд░ рд▓реМрдЯреЗрдВ




рдЖрдЗрдП рдЗрд╕рдХреА рд╢реБрд░реБрдЖрдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдЗрд╕ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдореЗрдВ рдХреИрд╕реЗ рд▓реМрдЯ рд╕рдХрддреЗ рд╣реИрдВ: рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рд╡рд╛-рд╢реИрд▓реА рдХреЗ рдирд┐рдпрдВрддреНрд░рдХ, рдореЙрдбрд▓ рдФрд░ рджреГрд╢реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдХреНрд╕рд░ C ++ рдореЗрдВ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрдирдХреЗ рд╕рд╛рде рдХреБрдЫ рднреА рдЧрд▓рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИрдВред рдПрдХ рдУрд░, рдореЙрдбрд▓-рд╡реНрдпреВ-рдХрдВрдЯреНрд░реЛрд▓рд░ рдкреИрдЯрд░реНрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рджреВрд╕рд░реЗ рдкрд░, рдЗрди рддрддреНрд╡реЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдПрдХ рд╡рд╕реНрддреБ рд╣реИ, рджреЛрдиреЛрдВ рд╡рд╕реНрддреБ-рдЙрдиреНрдореБрдЦ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдФрд░ рд╕реА ++ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдЕрд░реНрдерд╛рдд, рдпреЗ рдкрд░рд╕реНрдкрд░ рдХреЗ рд╕рд╛рде рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рд╣реИрдВ рд╕реНрдерд┐рддрд┐ред рдореЙрдбрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджреЗрдЦреЗрдВ; рдЬреЛ рдмрд╣реБрдд рдмреБрд░рд╛ рд╣реИ - рдореЙрдбрд▓ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рд╡реНрдпреВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд▓рдЧрднрдЧ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдХреЙрд▓рдмреИрдХ рд╣реИ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореЙрдбрд▓ рдмрджрд▓рдиреЗ рдкрд░ рд╡реНрдпреВ рдХреЛ рдЕрдзрд┐рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рд╕рд░реНрд╡реЛрддреНрддрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рднреА, рд╣рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдкрд╛рд░рд╕реНрдкрд░рд┐рдХ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдорд┐рд▓рддреА рд╣реИрдВред



рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдврд╝рддрд╛ рд╣реИ рдФрд░ рдирдП рдореЙрдбрд▓, рдирд┐рдпрдВрддреНрд░рдХ рдФрд░ рджреГрд╢реНрдп рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдПрдХ рд╕реНрдерд┐рддрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ, рдЬрдм рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдПрдХ рд╕реЗрдЧрдореЗрдВрдЯ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ рд╕рднреА рднрд╛рдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд╕рднреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджреЗрдЦреЗрдВ рдЬреЛ рдЕрд▓рд░реНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ callback, рдЖрджрд┐, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рд░ рдХреЛрдИред рдкрд░рд┐рдЪрд┐рдд рдкрд╛рд╕реНрддрд╛ рд░рд╛рдХреНрд╖рд╕ рдЗрди рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд╣рдХрд░реНрдореА рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдПрдХ рдФрд░ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╕рдВрднрд╡ рд╣реИ? рдореЙрдбрд▓-рд╡реНрдпреВ-рдХрдВрдЯреНрд░реЛрд▓рд░ рдкреИрдЯрд░реНрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ рдЬрд┐рд╕реЗ "рдпреВрдирд┐рдбрд╛рдпрд░реЗрдХреНрд╢рдирд▓ рдбреЗрдЯрд╛ рдлрд╝реНрд▓реЛ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдХреНрд╕рд░ рд╡реЗрдм рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлреЗрд╕рдмреБрдХ рдкрд░, рдЗрд╕реЗ рдлреНрд▓рдХреНрд╕ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди C ++ рдореЗрдВ, рдпрд╣ рдЕрднреА рддрдХ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реИред



рдЗрд╕ рддрд░рд╣ рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рддрддреНрд╡ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ: рд▓рдбрд╝рд╛рдИ, рдореЙрдбрд▓ рдФрд░ рджреГрд╢реНрдп, рд▓реЗрдХрд┐рди рдмреНрд▓реЙрдХ рдФрд░ рддреАрд░ рдХрд╛ рдЕрд░реНрде рдЕрд▓рдЧ рд╣реИред рдмреНрд▓реЙрдХ рдорд╛рди рд╣реИрдВ, рди рдХрд┐ рд╡рд╕реНрддреБрдПрдВ рдФрд░ рди рдХрд┐ рдкрд░рд╕реНрдкрд░ рдХреНрд╖реЗрддреНрд░реЛрдВ рд╡рд╛рд▓реЗ рдХреНрд╖реЗрддреНрд░ред рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рднреА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рддреАрд░ рд▓рд┐рдВрдХ рдирд╣реАрдВ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмрд┐рдирд╛ рдХреЛрдИ рд▓рд┐рдВрдХ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рддреАрд░ рдХрд╛рд░реНрдп рд╣реИрдВред рдПрдХреНрд╢рди рдФрд░ рдореЙрдбрд▓ рдХреЗ рдмреАрдЪ, рдПрдХ рдЕрдкрдбреЗрдЯ рдлрд╝рдВрдХреНрд╢рди рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЙрдбрд▓ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рджреБрдирд┐рдпрд╛ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд╣реИ, рдФрд░ рдПрдХреНрд╢рди, рдЬреЛ рдПрдХ рдШрдЯрдирд╛ рдХрд╛ рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдорд╛рдЙрд╕ рдХреНрд▓рд┐рдХ, рдпрд╛ рдЕрдореВрд░реНрдд рдХреЗ рджреВрд╕рд░реЗ рд╕реНрддрд░ рдХреА рдШрдЯрдирд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рддрддреНрд╡ рдпрд╛ рдкреНрд░рддреАрдХ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдкрдбреЗрдЯ рдлрд╝рдВрдХреНрд╢рди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рджреБрдирд┐рдпрд╛ рдХреА рдирдИ рд╕реНрдерд┐рддрд┐ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдореЙрдбрд▓ рд╡реНрдпреВ рдлрд╝рдВрдХреНрд╢рди рд░реЗрдВрдбрд░ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬреЛ рдореЙрдбрд▓ рдХреЛ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рджреГрд╢реНрдп рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд░реВрдкрд░реЗрдЦрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡реНрдпреВ рдХреЛ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╡реЗрдм рд╡рд┐рдХрд╛рд╕ рдореЗрдВ, рд░рд┐рдПрдХреНрдЯ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реА ++ рдореЗрдВ рдЕрднреА рддрдХ рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреМрди рдЬрд╛рдирддрд╛ рд╣реИ, рдЕрдЧрд░ рдРрд╕реЗ рд▓реЛрдЧ рд╣реИрдВ рдЬреЛ рдореБрдЭреЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреБрдЫ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЬрд▓реНрдж рд╣реА рдкреНрд░рдХрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдмреАрдЪ, рдЖрдк рддрддреНрдХрд╛рд▓ рдореЛрдб рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдбреНрд░реЙ рдлрд╝рдВрдХреНрд╢рди рдЖрдкрдХреЛ рд╕рд╛рдЗрдб рдЗрдлреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдореВрд▓реНрдп рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдЕрдВрдд рдореЗрдВ, рд╡реНрдпреВ рдореЗрдВ рдПрдХ рддрдВрддреНрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпрд╛ рдЕрдиреНрдп рдЗрд╡реЗрдВрдЯ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдПрдХреНрд╢рди рднреЗрдЬрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ, рдЗрд╕реЗ рдиреАрдЪреЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

application update(application state, action ev);

void run(const char* fname)
{
    auto term  = terminal{};
    auto state = application{load_buffer(fname), key_map_emacs};
    while (!state.done) {
        draw(state);
        auto act = term.next();
        state = update(state, act);
    }
}

рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реВрдк рд╕реЗ рд╕рд╣реЗрдЬрдиреЗ рдФрд░ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде, рдпрд╣ рд╕рд┐рд░реНрдл рд╢реБрд░реВ рдХрд┐рдП рдЧрдП рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдб рд╣реИред рдпрд╣рд╛рдВ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ terminalрдЬреЛ рдЖрдкрдХреЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, applicationрдпрд╣ рдореЙрдбрд▓ рдХрд╛ рдореВрд▓реНрдп рд╣реИ, рдпрд╣ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╕рдВрдкреВрд░реНрдг рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╕реНрдХреНрд░реАрди рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рд▓реМрдЯрд╛рддрд╛ рд╣реИ applicationред рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдХрд╛ рдЪрдХреНрд░ рддрдм рддрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛ, рдЬрдм рддрдХ рдХрд┐ !state.doneред рд▓реВрдк рдореЗрдВ, рдПрдХ рдирдпрд╛ рд░рд╛рдЬреНрдп рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рдЕрдЧрд▓реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, рд░рд╛рдЬреНрдп рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ state, рдФрд░ рд▓реВрдк рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рдХреЛрдб рдХрд╛ рдПрдХ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓рд╛рдн рд╣реИ: рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдЪрд░ рдореМрдЬреВрдж рд╣реИ, рдпрд╣ рдПрдХ рд╡рд╕реНрддреБ рд╣реИ stateред

рдХреНрд▓реЛрдЬрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕ рдПрдХрд▓-рдкрд░рдорд╛рдгреБ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЛ рдХрд╣рддреЗ рд╣реИрдВ: рдкреВрд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рдПрдХ рдПрдХрд▓ рдмрд┐рдВрджреБ рд╣реИ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдЬрд┐рдХ рдЗрд╕ рдмрд┐рдВрджреБ рдХреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рднрд╛рдЧ рдирд╣реАрдВ рд▓реЗрддрд╛ рд╣реИ, рдпрд╣ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЪрдХреНрд░ рдмрдирд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдЬрд┐рдХ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╢реБрджреНрдз рдХрд╛рд░реНрдп рд╣реЛрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдлрд╝рдВрдХреНрд╢рди updateред

рд▓реЗрдЦрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдмрджрд▓ рд░рд╣рд╛ рд╣реИред рдХрд╛рдо рдЕрдм рдЗрдВрдЯрд░рдлреЗрд╕ рдФрд░ рдСрдкрд░реЗрд╢рди рдХреЗ рдпреВрдПрдордПрд▓ рдЖрд░реЗрдЦ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдбреЗрдЯрд╛-рдЙрдиреНрдореБрдЦ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╕рдорд╛рдирддрд╛рдПрдБ рд╣реИрдВред рд╕рдЪ рд╣реИ, рдбреЗрдЯрд╛-рдЙрдиреНрдореБрдЦ рдбрд┐рдЬрд╝рд╛рдЗрди рдЖрдорддреМрд░ рдкрд░ рдЕрдзрд┐рдХрддрдо рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣рд╛рдВ, рдЧрддрд┐ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рд╕рд╛рджрдЧреА рдФрд░ рд╢реБрджреНрдзрддрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдЬреЛрд░ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдорд╛рдирддрд╛рдПрдВ рд╣реИрдВред

using index = int;

struct coord
{
    index row = {};
    index col = {};
};

using line = immer::flex_vector<char>;
using text = immer::flex_vector<line>;

struct file
{
    immer::box<std::string> name;
    text content;
};

struct snapshot
{
    text content;
    coord cursor;
};
 
struct buffer
{
    file from;
    text content;
    coord cursor;
    coord scroll;
    std::optional<coord> selection_start;
    immer::vector<snapshot> history;
    std::optional<std::size_t> history_pos;
};

struct application
{
    buffer current;
    key_map keys;
    key_seq input;
    immer::vector<text> clipboard;
    immer::vector<message> messages;
};

struct action { key_code key; coord size; };

рдКрдкрд░ рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЗ рдореБрдЦреНрдп рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╣реИрдВред рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдореБрдЦреНрдп рднрд╛рдЧ рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВ line, рдЬреЛ flex_vector рд╣реИ, рдФрд░ flex_vector vectorрдПрдХ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЖрдк рдПрдХ рд╕рдореНрдорд┐рд▓рд┐рдд рдСрдкрд░реЗрд╢рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдЧрд▓рд╛ textрд╡реЗрдХреНрдЯрд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЗрд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ lineред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдкрд╛рда рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╣реИред TextрдЬрд┐рд╕рдХреА рд╕рд╣рд╛рдпрддрд╛ fileрд╕реЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ , рдЬрд┐рд╕рдХрд╛ рдирд╛рдо, рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХ рдкрддрд╛ рд╣реИ, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣реИ textред рдХреЗ рд░реВрдк рдореЗрдВ fileрдПрдХ рдФрд░ рдкреНрд░рдХрд╛рд░, рдПрдХ рд╕рд░рд▓ рд▓реЗрдХрд┐рди рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ: boxред рдпрд╣ рдПрдХ рдПрдХрд▓ рддрддреНрд╡ рдХрдВрдЯреЗрдирд░ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдПрдХ рдвреЗрд░ рдореЗрдВ рдбрд╛рд▓рдиреЗ рдФрд░ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рдирдХрд▓ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рдВрд╕рд╛рдзрди-рдЧрд╣рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдПрдХ рдЕрдиреНрдп рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рдХрд╛рд░ snapshot:ред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдПрдХ рд░рджреНрдж рдлрд╝рдВрдХреНрд╢рди рд╕рдХреНрд░рд┐рдп рд╣реИред рдЗрд╕рдореЗрдВ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╢рд╛рдорд┐рд▓ рд╣реИ (рдлрд╝реЙрд░реНрдо рдореЗрдВtext) рдФрд░ рдХрд░реНрд╕рд░ рд╕реНрдерд┐рддрд┐ (рд╕рдордиреНрд╡рдп)ред рдпрд╣ рдЖрдкрдХреЛ рдХрд░реНрд╕рд░ рдХреЛ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд╕рдВрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдерд╛ред

рдЕрдЧрд▓реЗ рдкреНрд░рдХрд╛рд░ рд╣реИ bufferред рдпрд╣ vim рдФрд░ emacs рд╕реЗ рдПрдХ рд╢рдмреНрдж рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЦреБрд▓реЗ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЛ рд╡рд╣рд╛рдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ bufferрдПрдХ рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдкрд╛рда рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд╕рд╛рде рд╣реА рдкрд╛рда рдХреА рд╕рд╛рдордЧреНрд░реА - рдпрд╣ рдЖрдкрдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдкрд╛рда рдХреЗ рднрд╛рдЧ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, selection_startрдЪрдпрди рдХреА рд╢реБрд░реБрдЖрдд рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдЪрд░ рд╣реИред рд╕реЗ рд╡реЗрдХреНрдЯрд░ snapshotрдкрд╛рда рдХреА рдХрд╣рд╛рдиреА рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдо рдЯреАрдо рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ; рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ рдХреЗрд╡рд▓ рд░рд╛рдЬреНрдп рд╣реЛрддреЗ рд╣реИрдВред рдЕрдВрдд рдореЗрдВ, рдпрджрд┐ рд░рджреНрджреАрдХрд░рдг рдЕрднреА рдкреВрд░рд╛ рд╣реБрдЖ рд╣реИ, рддреЛ рд╣рдореЗрдВ рд░рд╛рдЬреНрдп рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ рдПрдХ рд╕реНрдерд┐рддрд┐ рд╕реВрдЪрдХрд╛рдВрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ history_posред

рдЕрдЧрд▓рд╛ рдкреНрд░рдХрд╛рд░ application:ред рдЗрд╕рдореЗрдВ рдПрдХ рдЦреБрд▓рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ (рдмрдлрд░), key_mapрдФрд░ рд╣реИkey_seqрдХреАрдмреЛрд░реНрдб рд╢реЙрд░реНрдЯрдХрдЯ рдХреЗ рд▓рд┐рдП, рд╕рд╛рде рд╣реА textрдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реЗрдХреНрдЯрд░ рдФрд░ рд╕реНрдХреНрд░реАрди рдХреЗ рдиреАрдЪреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд╡реЗрдХреНрдЯрд░ред рдЕрдм рддрдХ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╢реБрд░реБрдЖрддреА рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдзрд╛рдЧрд╛ рдФрд░ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╣реЛрдЧреА рдЬреЛ рдЗрдирдкреБрдЯ рд▓реЗрддреА рд╣реИ key_codeрдФрд░ coordред

рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдЖрдк рдореЗрдВ рд╕реЗ рдХрдИ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЗрди рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдпрджрд┐ рдореВрд▓реНрдп рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдореВрд▓реНрдп рджреНрд╡рд╛рд░рд╛ рд╡рд╛рдкрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдСрдкрд░реЗрд╢рди рдХрд╛рдлреА рд╕рд░рд▓ рд╣реЛрддреЗ рд╣реИрдВред рдореЗрд░реЗ рдкрд╛рда рд╕рдВрдкрд╛рджрдХ рдХрд╛ рдХреЛрдб рдЬреАрдердм рдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ , рдЗрд╕рд▓рд┐рдП рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред рдЕрдм рдореИрдВ рдХреЗрд╡рд▓ рдЙрд╕ рдХреЛрдб рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реВрдВрдЧрд╛ рдЬреЛ рд░рджреНрджреАрдХрд░рдг рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред

рд░рджреНрдж рдХрд░рдирд╛


рд╕рд╣реА рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд░рджреНрджреАрдХрд░рдг рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИред рдЕрдкрдиреЗ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ, рдореИрдВрдиреЗ рдЗрд╕реЗ emacs рдХреА рддрд░реНрдЬ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдкрд╣рд▓реЗ рдЗрд╕рдХреЗ рдореВрд▓ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрджреЛрдВ рдХреЛ рдХрд╣рд╛ред рдпрд╣рд╛рдВ рд░рд┐рдЯрд░реНрди рдХрдорд╛рдВрдб рдЧрд╛рдпрдм рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЖрдк рдЕрдкрдиреА рдиреМрдХрд░реА рдирд╣реАрдВ рдЦреЛ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдХреЛрдИ рд░рд┐рдЯрд░реНрди рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рддреЛ рдкрд╛рда рдореЗрдВ рдХреЛрдИ рднреА рдмрджрд▓рд╛рд╡ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рд╕рднреА рд░рджреНрдж рдХрд░рдиреЗ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдлрд┐рд░ рд╕реЗ рд░рджреНрдж рдХрд░рдиреЗ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрди рдЬрд╛рддреА рд╣реИред



рдЗрд╕ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рдКрдкрд░ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣рд╛рдБ рд▓рд╛рд▓ rhombus рдЗрддрд┐рд╣рд╛рд╕ рдореЗрдВ рдПрдХ рд╕реНрдерд┐рддрд┐ рджрд┐рдЦрд╛рддрд╛ рд╣реИ: рдпрджрд┐ рдПрдХ рд░рджреНрджреАрдХрд░рдг рдЕрднреА рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ, рддреЛ рд▓рд╛рд▓ rhombus рд╣рдореЗрд╢рд╛ рдмрд╣реБрдд рд╣реА рдЕрдВрдд рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рд░рджреНрдж рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣реАрд░рд╛ рдПрдХ рд░рд╛рдЬреНрдп рдХреЛ рд╡рд╛рдкрд╕ рд▓реЗ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдХрддрд╛рд░ рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рдФрд░ рд░рд╛рдЬреНрдп рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ - рдЬреИрд╕рд╛ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рджреЗрдЦрддрд╛ рд╣реИ (S3)ред рдпрджрд┐ рдЖрдк рдлрд┐рд░ рд╕реЗ рд░рджреНрдж рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд░рд╛рдЬреНрдп S2 рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрддреЗ рд╣реИрдВ, рддреЛ рд░рд╛рдЬреНрдп S2 рдХреЛ рдХрддрд╛рд░ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЕрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ S5 рдХреЗ рдирдП рд░рд╛рдЬреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдХрддрд╛рд░ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдПрдХ рд░реЛрдореНрдмрд╕ рдХреЛ рдЗрд╕рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЕрдм, рдкрд┐рдЫрд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреВрд░реНрд╡рд╡рдд рдХрд░рддреЗ рд╕рдордп, рдкрд╣рд▓реЗ рдХреА рдЧрдИ рдкреВрд░реНрд╡ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдкрд╣рд▓реЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рддрд░рд╣ рдХреЗ рд░рджреНрджреАрдХрд░рдг рдкреНрд░рдгрд╛рд▓реА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:

buffer record(buffer before, buffer after)
{
    if (before.content != after.content) {
        after.history = after.history.push_back({before.content, before.cursor});
        if (before.history_pos == after.history_pos)
            after.history_pos = std::nullopt;
    }
    return after;
}

buffer undo(buffer buf)
{
    auto idx = buf.history_pos.value_or(buf.history.size());
    if (idx > 0) {
        auto restore = buf.history[--idx];
        buf.content = restore.content;
        buf.cursor = restore.cursor;
        buf.history_pos = idx;
    }
    return buf;
  }

рджреЛ рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реИрдВ, recordрдФрд░ undoред RecordрдХрд┐рд╕реА рднреА рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ред рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рдХреЛрдИ рд╕рдВрдкрд╛рджрди рд╣реБрдЖ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдлрд╝рдВрдХреНрд╢рди рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдкрд╛рд░рджрд░реНрд╢реА рд╣реИред рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдмрд╛рдж, рдлрд╝рдВрдХреНрд╢рди рдЪреЗрдХ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпрджрд┐ рдХреЛрдИ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдЖ рд╣реИ, рддреЛ push_backрд╕рд╛рдордЧреНрд░реА рдФрд░ рдХрд░реНрд╕рд░ рд╕реНрдерд┐рддрд┐ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛ рдЬрд╛рддреА рд╣реИ historyред рдпрджрд┐ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдХреЛрдИ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реБрдЖ history_pos(рдЕрд░реНрдерд╛рдд, рдкреНрд░рд╛рдкреНрдд рдЗрдирдкреБрдЯ bufferрд░рджреНрдж рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ), рддреЛ history_posрдПрдХ рдорд╛рди рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ nullред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ undo, рддреЛ рд╣рдо рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ history_posред рдпрджрд┐ рдЗрд╕рдХрд╛ рдХреЛрдИ рдЕрд░реНрде рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ history_posрдХрд╣рд╛рдиреА рдХреЗ рдЕрдВрдд рдореЗрдВ рдорд╛рдирддреЗ рд╣реИрдВ ред рдпрджрд┐ рд░рджреНрджреАрдХрд░рдг рдЗрддрд┐рд╣рд╛рд╕ рдЦрд╛рд▓реА рдирд╣реАрдВ рд╣реИ (рдЕрд░реНрдерд╛рддhistory_posрдХрд╣рд╛рдиреА рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдирд╣реАрдВ), рд░рджреНрдж рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рд╕рд╛рдордЧреНрд░реА рдФрд░ рдХрд░реНрд╕рд░ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ history_posред рдкреВрд░реНрд╡рд╡рдд рдСрдкрд░реЗрд╢рди рдХреА рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдпрддрд╛ рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛рддреА рд╣реИ record, рдЬрд┐рд╕реЗ рдкреВрд░реНрд╡рд╡рдд рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдСрдкрд░реЗрд╢рди рд╣реИ undoрдЬреЛ рдХреЛрдб рдХреА 10 рд▓рд╛рдЗрдиреЗрдВ рд▓реЗрддрд╛ рд╣реИ, рдФрд░ рдЬреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдмрджрд▓рд╛рд╡ рдХреЗ (рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде) рдХрд┐рд╕реА рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕рдордп рдпрд╛рддреНрд░рд╛


рд╕рдордп рдпрд╛рддреНрд░рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЕрдм рджреЗрдЦреЗрдВрдЧреЗ, рдпрд╣ рд░рджреНрджреАрдХрд░рдг рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рд╖рдп рд╣реИред рдореИрдВ рдПрдХ рд░реВрдкрд░реЗрдЦрд╛ рдХреЗ рдХрд╛рдо рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░реВрдВрдЧрд╛ рдЬреЛ рд╕рдорд╛рди рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред рдпрд╣рд╛рдБ рдХреА рд░реВрдкрд░реЗрдЦрд╛ рдХреЛ рдЗрд╡рд┐рдЧ-рдбрд┐рдмрдЧ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ ред Ewig рдХреЗ рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХреБрдЫ рдбреАрдмрдЧрд┐рдВрдЧ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЕрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рдЖрдк рдбрд┐рдмрдЧрд░ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред



рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЕрдВрддрд┐рдо рдХреНрд░рд┐рдпрд╛ рдЖрдХрд╛рд░ рдмрджрд▓ рд░рд╣реА рдереА, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдПрдХ рдирдИ рд╡рд┐рдВрдбреЛ рдЦреЛрд▓реА рдереА, рдФрд░ рдореЗрд░реЗ рд╡рд┐рдВрдбреЛ рдореИрдиреЗрдЬрд░ рдиреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рдЦреБрд▓реА рд╣реБрдИ рд╡рд┐рдВрдбреЛ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓ рджрд┐рдпрд╛ рдерд╛ред рдмреЗрд╢рдХ, JSON рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХреНрд░рдорд╛рдВрдХрди рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдиреЛрдЯреЗрд╢рди рдЬреЛрдбрд╝рдирд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдмрд╛рдХреА рд╕рд┐рд╕реНрдЯрдо рдХрд╛рдлреА рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╣реИ, рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рд╕рдорд╛рди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЖрдк рд╕рднреА рдкреВрд░реНрдг рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдмреЗрд╢рдХ, рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрд╡рд╕реНрдерд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХреЛрдИ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╡рд╣ рд░рд╛рдЬреНрдп рд╣реИ рдЬреЛ рдбрд╛рдЙрдирд▓реЛрдб рд╕реЗ рдкрд╣рд▓реЗ рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдбрдмрд▓-рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрдкрдиреА рдкрд┐рдЫрд▓реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдпрд╣ рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА рдбрд┐рдмрдЧрд┐рдВрдЧ рдЯреВрд▓ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЦрд░рд╛рдмреА рдХреА рдШрдЯрдирд╛ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк CPPCON 19, рд╕рдмрд╕реЗ рдореВрд▓реНрдпрд╡рд╛рди рдореВрд▓реНрдпреЛрдВ рдкрд░ рдореЗрд░реА рд░рд┐рдкреЛрд░реНрдЯ рд╕реБрди рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд╣рд╛рдВ рдореИрдВ рдЗрд╕ рдбрд┐рдмрдЧрд░ рдХреА рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЬрд╛рдВрдЪ рдХрд░реВрдВрдЧрд╛ред



рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореВрд▓реНрдп-рдЖрдзрд╛рд░рд┐рдд рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдЗрд╕рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ рдпрд╣ рднреА рдмрддрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкрджрд╛рдиреБрдХреНрд░рдо рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рдХреА рдкреНрд░рддрд┐рд░реВрдкрдХрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдмрдбрд╝реЗ рдЕрдкрдбреЗрдЯ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕рдм рдХреБрдЫ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡рд╣ рд░рд┐рдкреЛрд░реНрдЯ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдФрд░ рдорд▓реНрдЯреА-рдереНрд░реЗрдбреЗрдб рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреА рд╣реИред рдЗрд╕ рд░рд┐рдкреЛрд░реНрдЯ рдХрд╛ рдПрдХ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдзреЗ рдШрдВрдЯреЗ рдХреА рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рд╛рдордЧреНрд░реА рдкреЛрд╕реНрдЯрдореЙрдбрд░реНрди рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рд╣реИрдВред


рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ


рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдЯреЙрдХ рд▓реЗрдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдореИрдВ рдПрдВрдбреА рд╡рд┐рдВрдЧреЛ рдХреЛ рдЙрджреНрдзреГрдд рдХрд░реВрдВрдЧрд╛ - рд╡рд╣ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдбреЗрд╡рд▓рдкрд░ рд╣реИрдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ рд╡реА 8 рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рдордп рд╕рдорд░реНрдкрд┐рдд рдХрд┐рдпрд╛ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рдХрдВрдкрд╛рдЗрд▓рд░ рд╣реИрдВ, рдЖрдЦрд┐рд░рдХрд╛рд░, рд╡рд╣ рдЬреАрдПрдирдпреВ рдХреЗ рд▓рд┐рдП рдпреЛрдЬрдирд╛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЧреБрдЗрд▓реЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧреЗ рд╣реБрдП рд╣реИрдВред рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдиреЗ рдЯреНрд╡рд┐рдЯрд░ рдкрд░ рд▓рд┐рдЦрд╛: "рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рддреНрд╡рд░рдг рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╣рд░ рдЫреЛрдЯреЗ рдмрджрд▓рд╛рд╡ рдХреЛ рдорд╛рдкрддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдЫреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкрд░рд┐рдгрд╛рдо рджреЗрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рддреНрд╡рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдиреЗрддреНрд░рд╣реАрди рд░реВрдк рд╕реЗ, рдмрд╣реБрдд рдкреНрд░рдпрд╛рд╕ рдХрд░рдХреЗ, 100% рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд░рдЦрддреЗ рд╣реИрдВ рдФрд░ рдХреЗрд╡рд▓ рдЕрдВрддрд░реНрдЬреНрдЮрд╛рди рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдЕрдЬреАрдм рд╡рд┐рдЪрд┐рддреНрд░рддрд╛ рд╣реИред "

рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реА ++ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкрд╣рд▓реА рд╢реИрд▓реА рдореЗрдВ рд╕рдлрд▓ рд╣реЛ рд░рд╣реЗ рд╣реИрдВред рд╣рдореЗрдВ рдПрдХ рдмрдВрдж рдкреНрд░рдгрд╛рд▓реА рджреЗрдВ, рдФрд░ рд╣рдо, рдЕрдкрдиреЗ рдФрдЬрд╛рд░реЛрдВ рд╕реЗ рд▓реИрд╕ рд╣реЛрдХрд░, рд╣рд░ рдЙрд╕ рдЪреАрдЬ рдХреЛ рдирд┐рдЪреЛрдбрд╝ рд▓реЗрдВрдЧреЗ рдЬреЛ рдЙрд╕рд╕реЗ рд╕рдВрднрд╡ рд╣реИред рд▓реЗрдХрд┐рди рджреВрд╕рд░реА рд╢реИрд▓реА рдореЗрдВ рд╣рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрджрдд рдирд╣реАрдВ рд╣реИред рдмреЗрд╢рдХ, рджреВрд╕рд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдзрд┐рдХ рдЬреЛрдЦрд┐рдо рднрд░рд╛ рд╣реИ, рдФрд░ рдЕрдХреНрд╕рд░ рдпрд╣ рдорд╣рд╛рди рдкреНрд░рдпрд╛рд╕ рдХреА рдмрд░реНрдмрд╛рджреА рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред рджреВрд╕рд░реА рдУрд░, рдХрд┐рд╕реА рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦрдХрд░, рдЗрд╕реЗ рдЕрдХреНрд╕рд░ рдЖрд╕рд╛рди рдФрд░ рддреЗрдЬ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдореИрдВ рдХрдо рд╕реЗ рдХрдо рдЗрд╕ рджреВрд╕рд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдордирд╛рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред

рдЬреБрдЖрди рдкреНрдпреВрдВрдЯреЗ рдиреЗ C ++ Russia 2019 рдорд╛рд╕реНрдХреЛ рд╕рдореНрдореЗрд▓рди рдореЗрдВ рдмрд╛рдд рдХреА рдФрд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдЬреЛ рдЖрдкрдХреЛ рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЗрдВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВред рдЗрди рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдЬрд╛рджреВ рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдирдХрд▓ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ - рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдПрдВрдЯреЛрди рдкреЛрд▓реБрдЦрд┐рди рдФрд░ рд░реЛрдорди рд░реВрд╕рд┐рдпрд╛ рдЖрдЧрд╛рдореА рд╕рдореНрдореЗрд▓рди рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ ред рд╕рд╛рдЗрдЯ рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЕрдкрдбреЗрдЯ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ ред

Source: https://habr.com/ru/post/undefined/


All Articles