рдорд╛рдирдХ рдЙрджрд╛рд╣рд░рдг рдХреА рд╢рд┐рдХрд╛рдпрдд рдХрд░рдирд╛

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

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
рдЗрдирдкреБрдЯ.рдЯреЗрдХреНрд╕ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╡реНрд╣реЙрдЯреНрд╕рдПрдк рджреНрд╡рд╛рд░рд╛ рдЕрд▓рдЧ рдХрд┐рдП рдЧрдП рдкреВрд░реНрдгрд╛рдВрдХреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдкрдврд╝реЗрдВред рдЙрдиреНрд╣реЗрдВ рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ рдФрд░ output.txt рдкрд░ рд▓рд┐рдЦреЗрдВ

рдЖрдк рдирд┐рдореНрди рд╕рдорд╛рдзрд╛рди рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

#include <vector> #include <algorithm> #include <fstream> int main(){ //  input.txt   std::ifstream fin("input.txt"); //  output.txt   std::ofstream fout("output.txt"); //       std::vector<int> v; //  ,           std::copy(std::istream_iterator<int>(fin), std::istream_iterator<int>(), std::inserter(v, v.end())); //   std::sort(v.begin(), v.end()); //  ,          std::copy(v.begin(), v.end(), std::ostream_iterator<int>(fout, " ")); return 0; } 

рдХреЛрдб рдореЗрдВ "рдЬрд╛рджреВ" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж:

  • рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдиреАрдВрд╡ рдореЗрдВ рд╕реЗ рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЖрдзреЗ рдЕрдВрддрд░рд╛рд▓ рднреА рд╣реИрдВред рд╢рдмреНрджрд╛рд░реНрде рджреНрд╡рд╛рд░рд╛ (рдкрдврд╝реЗрдВ - рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ) рд╡реЗ рд╕рдВрдХреЗрдд рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВред рдпрд╣реА рд╣реИ, dereferencing рдСрдкрд░реЗрдЯрд░ * рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрд╕ рддрддреНрд╡ рдХреЛ рд▓реМрдЯрд╛рдПрдЧрд╛ рдЬреЛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдХрд░реНрддрд╛ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ, ++ рдЕрдЧрд▓реЗ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдкреБрдирд░рд╛рд╡реГрддреНрдд рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░реЗрдЧрд╛ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдХрд┐рд╕реА рднреА рдХрдВрдЯреЗрдирд░ рдХреЛ рдЙрд╕рдХреЗ рдЕрдВрдд рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ [рд╢реБрд░реБрдЖрдд, рдЕрдВрдд) рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдкрд╣рд▓реЗ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдмрд┐рдВрджреБ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ, рдЕрдВрдд - рдЕрдВрддрд┐рдо рдХреЗ рд▓рд┐рдП ;
  • рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдЬреЛ рдХрдВрдЯреЗрдирд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЪреВрдВрдХрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рдХрдВрдЯреЗрдирд░ рдХреА рд╢реБрд░реБрдЖрдд рдФрд░ рдЕрдВрдд (рдпрд╛ рдЙрд╕рдХреЗ рднрд╛рдЧ) рд▓реЗрддреЗ рд╣реИрдВ;
  • рдХреЙрдкреА рдХреЙрдкреА рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдмрд╕ рдПрдХ рдЖрдзреЗ-рдЕрдВрддрд░рд╛рд▓ рд╕реЗ рджреВрд╕рд░реЗ рддрдХ рддрддреНрд╡реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реИред рдпрджрд┐ рдХреЛрдИ рд╕реНрдореГрддрд┐ рд▓рдХреНрд╖реНрдп рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдЖрд╡рдВрдЯрд┐рдд рдирд╣реАрдВ рдХреА рдЧрдИ рд╣реИ, рддреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╣реИ [ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ ];
  • рдбрд╛рд▓рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЗрдЯреНрд░реЗрдЯрд░ рд╕реЗ рдкрд╣рд▓реЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдПрдХ рдореВрд▓реНрдп рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ [ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ ]
  • istream_iterator рдФрд░ ostream_iterator рдзрд╛рд░рд╛рдУрдВ рдХреЛ рдХрдВрдЯреЗрдирд░-рд╢реИрд▓реА рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ [ istream_iterator , ostream_iterator ]

рдпрд╣ рдЙрджрд╛рд╣рд░рдг рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╡рд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╣рдорд╛рд░реА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
Input.txt рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓реЛрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╡рд╛рд▓реА рдПрдХ рд╕реВрдЪреА рд╣реИ: рдЕрдВрддрд┐рдо рдирд╛рдо, рдкрд╣рд▓рд╛ рдирд╛рдо, рдЙрдореНрд░ (рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдПрдХ рд░рд┐рдХреЙрд░реНрдб рд╣реИ, рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рд╕реНрдерд╛рди рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ)ред рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рд╕рд░рдгреА рдореЗрдВ рдкрдврд╝реЗрдВ, рдЗрд╕реЗ рдЙрдореНрд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ рдФрд░ output.txt рдлрд╝рд╛рдЗрд▓ рдкрд░ рд▓рд┐рдЦреЗрдВред рдПрдХ рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ, рдЬрд┐рд╕рдХреА рдЖрдпреБ 20 рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди 25 рд╡рд░реНрд╖ рд╕реЗ рдХрдо рд╣реИред
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╕рдорд╛рдзрд╛рди рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдирд┐рд░реНрдгрдп рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрд░реНрдерд╛рддреН, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрд╛рд░реНрдп рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:

  1. рдПрдХ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░реЗрдВред - рдЖрдк рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рдВрд░рдЪрдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ:

     struct man{ std::string firstname, secondname; size_t age; }; 

    рдореИрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рдХреЙрдкреА рдСрдкрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдХреЙрдкреА рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЖрдЧреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕рд╛рде, рдЖрдкрдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
  2. рдУрд╡рд░рд▓реЛрдб I / O рдСрдкрд░реЗрдЯрд░ - рдЗрди рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдереНрд░реЗрдбрд░реНрд╕ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╣реЗрд░рдлреЗрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реИрд╕реЗ рднреА, рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рд╣реИред

     std::ostream& operator << (std::ostream& out, const man& p){ out << p.firstname << " " << p.secondname << " " << p.age; return out; } std::istream& operator >> (std::istream& in, man& p){ in >> p.firstname >> p.secondname >> p.age; return in; } 
  3. рдСрдмреНрдЬреЗрдХреНрдЯ рдСрд░реНрдбрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдореЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ - рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдмрдбрд╝рд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реИ: рдЖрдк рдСрдкрд░реЗрдЯрд░ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ <, рдЖрдк рдПрдХ рдлрд╝рдВрдХреНрд╢рди, рдлрд╝рдВрдХреНрдЯрд░ рдпрд╛ рд▓реИрдореНрдмреНрдбрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

     bool comparator(const man& p1, const man& p2){ return p1.age < p2.age; } 
  4. рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЪрдпрди рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдпрдо рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ - рдлрд┐рд░ рд╕реЗ, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рдЪрдпрдиред рдЗрд╕ рдмрд╛рд░, рдПрдХ рдлрд╝рдирдХрд╛рд░ (рдЙрд╕ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдЬрд┐рд╕рдореЗрдВ рдХреЛрд╖реНрдардХ [ рдлрд╝рдирдХрд╛рд░ ] рдСрдкрд░реЗрдЯрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдЖрдпреБ рд╕реАрдорд╛ рдкрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

     struct predicate{ size_t begin, end; predicate(int p1, int p2): begin(p1), end(p2) {} bool operator ()(const man& p){ return (p.age > begin) && (p.age < end); } }; 

    рдлрд╝рдирдХрд╛рд░ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ - рдЗрд╕ рддрд░рд╣ рд╣рдо рдЗрд╕рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЦреИрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ:

 int main(){ std::ifstream fin("input.txt"); std::ofstream fout("output.txt"); std::vector<man> v; std::copy(std::istream_iterator<man>(fin), std::istream_iterator<man>(), std::inserter(v, v.end())); std::sort(v.begin(), v.end(), comparator); std::copy_if(v.begin(), v.end(), std::ostream_iterator<man>(std::cout, "\n"), predicate(20, 25)); std::copy(v.begin(), v.end(), std::ostream_iterator<man>(fout, "\n")); return 0; } 

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдореБрдЦреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡реЗрдХреНрдЯрд░ рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реБрдП, рдореБрдЦреНрдп рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдиреНрдпреВрдирддрдо рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ copy_if рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рдПрдХ рдХреЙрд▓ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред рдпрд╣ рдЙрдкрдпреЛрдЧреА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо C ++ 11 рдорд╛рдирдХ рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛, рдпрд╣ рдПрдХ рдХрдВрдЯреЗрдирд░ рд╕реЗ рддрддреНрд╡реЛрдВ рдХреЛ рдХреЗрд╡рд▓ рдЙрди рддрддреНрд╡реЛрдВ рдХреЛ рдХреЙрдкреА рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВред

рдЗрд╕рд╕реЗ рдХреНрдпрд╛ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?

  1. рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд╛рдирдирд╛ рдФрд░ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдЧрддрд┐ рджреЗрддрд╛ рд╣реИ (рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рддрддрд╛ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ)ред
  2. рд╡рд┐рднрд┐рдиреНрди рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдирд╛ рдФрд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреЙрдкреА рдСрдкрд░реЗрдЯрд░реНрд╕ рдЙрдкрдпреЛрдЧреА рд╣реИред рд╡реЗ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЬрдм рдХрдВрдЯреЗрдирд░ рдореЗрдВ рддрддреНрд╡ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
  3. рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рддреБрд▓рдирд╛ рдСрдкрд░реЗрдЯрд░ рдФрд░ рдСрд░реНрдбрд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдСрдкрд░реЗрдЯрд░ рдХреЛ рдЕрдзрд┐рднрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  4. рдлрд╝рдВрдХреНрдЯрд░ - рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрдкрдХрд░рдг рдЬреЛ рдЖрдкрдХреЛ "рдореЗрдореЛрд░реА" рдпрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
  5. ... рд╢рд╛рдпрдж рдХреБрдЫ рдФрд░ ...

рдзреАрд░рдЬ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рд╕рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб:

an_example.cpp
 #include <string> #include <vector> #include <fstream> #include <algorithm> #include <iostream> #include <iterator> struct man{ std::string firstname, secondname; size_t age; }; std::ostream& operator << (std::ostream& out, const man& p){ out << p.firstname << " " << p.secondname << " " << p.age; return out; } std::istream& operator >> (std::istream& in, man& p){ in >> p.firstname >> p.secondname >> p.age; return in; } bool comparator(const man& p1, const man& p2){ return p1.age < p2.age; } struct predicate{ size_t begin, end; predicate(int p1, int p2): begin(p1), end(p2) {} bool operator ()(const man& p){ return (p.age > begin) && (p.age < end); } }; int main(){ std::ifstream fin("input.txt"); std::ofstream fout("output.txt"); std::vector<man> v; std::vector<man>::iterator i; std::copy(std::istream_iterator<man>(fin), std::istream_iterator<man>(), std::inserter(v, v.end())); std::sort(v.begin(), v.end(), comparator); std::copy_if(v.begin(), v.end(), std::ostream_iterator<man>(std::cout, "\n"), predicate(20, 25)); std::copy(v.begin(), v.end(), std::ostream_iterator<man>(fout, "\n")); return 0; } 

рдЧреНрд░рдВрде рд╕реВрдЪреА:

  1. Stepanov рдЕрд▓ред рд▓реА рдореЗрдВрдЧ, рдж рд╕реНрдЯреИрдВрдбрд░реНрдб рдЯреЗрдореНрдкрд▓реЗрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА, 1995
  2. CPP рд╕рдВрджрд░реНрдн, рдкреНрд░рддрд┐рд▓рд┐рдкрд┐
  3. рд╕реАрдкреАрдкреА рд╕рдВрджрд░реНрдн, рдЖрд╡реЗрд╖рдг
  4. CPP рд╕рдВрджрд░реНрдн, istream_iterator
  5. CPP рд╕рдВрджрд░реНрдн, ostream_iterator
  6. рд╡рд┐рдХреА рдлрдирдХрд╛рд░

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


All Articles