рдпрд╣ рдЖрд▓реЗрдЦ рдорд╛рдирдХ C ++ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдореВрд▓ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
C ++ Standard Library рдХрд╛ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рд╣рд┐рд╕реНрд╕рд╛ STL (Standard Template Library) рд╣реИред STL рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдкрд╛рдБрдЪ рдореБрдЦреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдШрдЯрдХ рд╣реЛрддреЗ рд╣реИрдВ:
- рдХрдВрдЯреЗрдирд░ : рдореЗрдореЛрд░реА рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
- рдЗрдЯреНрд░реЗрдЯрд░ : рдХрдВрдЯреЗрдирд░ рдХреА рд╕рд╛рдордЧреНрд░реА рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд▓рд┐рдП рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
- рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо : рдПрдХ рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред
- рдлрд╝рдВрдХреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ : рдЕрдиреНрдп рдШрдЯрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рддрд╛ рд╣реИред
- рдПрдбреЗрдкреНрдЯрд░ : рдПрдХ рдЕрд▓рдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдШрдЯрдХ рдХреЛ рдЧреЛрдж рд▓реЗред

рд╕рднреА рдШрдЯрдХ рдХрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП, рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреЗ рд╕рдордЭреМрддреЗ рдореЗрдВ рд╣реИрдВред
рдХрдВрдЯреЗрдирд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╕реЗ, рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдПрдХ рдХрдВрдЯреЗрдирд░ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ,
рдХрдВрдЯреЗрдирд░реЛрдВ рдореЗрдВ рдорд╛рдирдХ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ , рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рд╕реВрдЪреА, рд╡реЗрдХреНрдЯрд░, рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рдФрд░ рдХрдИ рдЕрдиреНрдпред рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рд▓рд┐рдП рдФрдкрдЪрд╛рд░рд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдХрд╛рдлреА рд╡реНрдпрд╛рдкрдХ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореВрд▓ рдирд┐рдпрдо рддрддреНрд╡реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╣реИред рдХрдВрдЯреЗрдирд░ рдХреЗ рддрддреНрд╡реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╡рд┐рд╢реЗрд╖ рд╡рд╕реНрддреБрдУрдВ -
рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИред рдЖрдк рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реЛрдВрдЧреЗ рдХрд┐ рдХрдВрдЯреЗрдирд░ рдХреЗ рддрддреНрд╡ рд╕реНрдореГрддрд┐ рдореЗрдВ рдХреИрд╕реЗ рд╕реНрдерд┐рдд рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдкреБрдирд░рд╛рд╡реГрддреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛ред рдкрд╣рд▓реЗ рддрддреНрд╡ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐
рдЗрдЯреНрдЯрд░ рдкреНрд░рд╛рд░рдВрдн () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
; рдХрдВрдЯреЗрдирд░ред
рдЕрдВрддрд┐рдо рддрддреНрд╡ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдЗрд╕реЗ
рдЗрдЯрдорд░ рдЕрдВрдд () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
; рдХрдВрдЯреЗрдирд░ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпрд╛рдБ
рдЖрдзреЗ-рдЕрдВрддрд░рд╛рд▓ (рдпрд╛
рдЖрдзреЗ- рдЦрдВрдб) рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрддреА рд╣реИрдВ, рдЬрд┐рд╕реЗ рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ [рд╢реБрд░реБрдЖрдд, рдЕрдВрдд) рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХрдВрдЯреЗрдирд░ рдШреЛрд╖рдгрд╛:
struct a_container { struct an_iterator; an_iterator begin(); an_iterator end(); };
рдЕрдкреЗрдХреНрд╖рд┐рдд C ++ 20 рдорд╛рдирдХ рдПрдХ рдРрд╕реА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЖрдзреЗ- рдкрд░реНрд╡рддрдорд╛рд▓рд╛ - рд╕реАрдорд╛рдУрдВ рдХреЛ рдШреЗрд░рддрд╛ рд╣реИ
рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдПрдХ рд╡рд╕реНрддреБ рд╣реИ рдЬреЛ рдХрдВрдЯреЗрдирд░ рдХреЗ рддрддреНрд╡реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрдВрдЯреЗрдирд░ рдХреА рдПрдХ рд╕рдВрдкрддреНрддрд┐ рд╣реИред рд╕реА ++ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдкрд╣рд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдПрдХ рдЗрдЯреНрд░реЗрдЯрд░ рдПрдХ рдХрдВрдЯреЗрдирд░ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЖрдзреБрдирд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдпрд╣ рдПрдХ рдРрд╕рд╛ рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдПрдХ рдХрдВрдЯреЗрдирд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рддрд╛ рд╣реИред
рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдбреЗрд░реЗрдлреНрд░реЗрдВрд╕рд┐рдВрдЧ рдФрд░ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╣реИрдВред рдиреАрдЪреЗ рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рдХрдВрдЯреЗрдирд░ рдШреЛрд╖рдгрд╛ рд╣реИред
template<typename TYPE> struct a_container { struct an_iterator { void operator++(); TYPE& operator*(); }; an_iterator begin(); an_iterator end(); };
рдореИрдВ рдорд╛рдирдХ рдПрдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рдмреЗрд╣рддрд░ рдкрд░рд┐рднрд╛рд╖рд╛ рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛: рдПрдХ
рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рдПрдХ рдХреНрд░рдо рд╣реИ рдЬреЛ рд╡рд╛рдВрдЫрд┐рдд рдкрд░рд┐рдгрд╛рдо рдХреЗ рд▓рд┐рдП рдЪрд░рдгреЛрдВ рдХреА рдПрдХ рд╕реАрдорд┐рдд рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рдЕрдЧреНрд░рдгреА рд╣реИ ред
рдПрд╕рдЯреАрдПрд▓ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдлрд╝рдВрдХреНрд╢рдВрд╕ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЗрдирдкреБрдЯ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рдЖрдзреЗ-рдЕрдВрддрд░рд╛рд▓ рд▓реЗрддреЗ рд╣реИрдВред рдЗрди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╡рд░реНрдгрд┐рдд рд╣реИрдВ:
template<typename ITERATOR, typename RESULT> RESULT an_algorithm(ITERATOR first, ITERATOR last, ...);
рдПрдХ рд╡рд░реНрдЧ рдШреЛрд╖рдгрд╛ рдореЗрдВ, рдЖрдк рдСрдкрд░реЗрдЯрд░ () рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЗрд╕ рдСрдкрд░реЗрдЯрд░ рдХреЛ рдПрдХ рд╡рд░реНрдЧ рдореЗрдВ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЧреБрдг рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ (рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред рдРрд╕реА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдпрд╛
рдлрдВрдХреНрд╢рдирд▓рд░реНрд╕ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрдВрдХреНрд╢рдирд▓рд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдЬрдм рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ "рдореЗрдореЛрд░реА" рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рд╕рд╛рде рд╣реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
C ++ 11 рдорд╛рдирдХ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, рдлрдВрдХреНрд╢рдВрд╕ рдХреА рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рдВрдХреЗрддрди рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ - рд▓реИрдореНрдмрдбрд╛ рдлрд╝рдВрдХреНрд╢рдиред
рдлрдВрдХреНрд╢рдВрд╕ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдирд╣реАрдВ рд╣реИрдВред рдЬрдм рддрдХ рдХрднреА-рдХрднреА рдлрд╝рдВрдХреНрдЯрд░
рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ (C ++ 11 рдорд╛рдирдХ рддрдХ - unary_function рдпрд╛ рдмрд╛рдЗрдирд░реА_рдлрдВрдХреНрд╢рди)ред рдПрдХ рдлрд╝рдирдХрд╛рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрджрд╛рд╣рд░рдг:
template<typename TYPE> struct plus{ TYPE operator ()(const TYPE& p1, const TYPE& p2) const{ return p1 + p2; } };
рдПрд╕рдЯреАрдПрд▓ рдХрдИ рд╡рд░реНрдЧреЛрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ (рдлрд╝рдВрдХреНрд╢рди) рдХреЛ рднреА рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рджрд╛рдИрдВ рдУрд░ рдмрджрд▓рддреЗ рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдПрдХ рд╕реНрдЯреИрдХ рдПрдбреЗрдкреНрдЯрд░ рд╣реИ рдЬреЛ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕реНрдЯреИрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдПрдХ рдмрд╛рдЗрдирд░реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдПрдбреЙрдкреНрдЯрд░ рдХреЛ рдПрдХ рдПрдХрд░реА рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдлрд┐рд▓рд╣рд╛рд▓ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди C ++ рдорд╛рдирдХ рдореЗрдВ рдкрджрд╛рд╡рдирдд рд╣реИ):
template<typename BIDIRECTIONAL_FUNCTION, typename TYPE> class bind1st { BIDIRECTIONAL_FUNCTION _bf; TYPE _first; public: bind1st(BIDIRECTIONAL_FUNCTION bf, TYPE first): _bf(bf), _first(first) {} TYPE operator()(const TYPE& p) const { return _bf(_first, p); } };
рд╕реНрд╡рддрдВрддреНрд░ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП
- рдЧрдереБрдм рдкрд░ рд╕реА ++ 20 рдбреНрд░рд╛рдлреНрдЯ
- C ++ рд╕рдВрджрд░реНрдн
- C ++ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╛рд╕
- рд░реЗрдВрдЬ- v3, рдорд╛рдирдХ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕реНрддрд╛рд╡