C ++ рдореЗрдВ Google рд╕реНрдЯрд╛рдЗрд▓ рдЧрд╛рдЗрдбред рднрд╛рдЧ 9

рднрд╛рдЧ 1. рдкрд░рд┐рдЪрдп
...
рднрд╛рдЧ 8. рдирд╛рдордХрд░рдг
рднрд╛рдЧ 9. рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ
...


рдпрд╣ рд▓реЗрдЦ C ++ рдореЗрдВ Google рд╢реИрд▓реА рдЧрд╛рдЗрдб рдХреЗ рд░реВрд╕реА рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред
рдореВрд▓ рд▓реЗрдЦ (рдЬреАрдереБрдм рдкрд░ рдХрд╛рдВрдЯрд╛), рдЕрджреНрдпрддрди рдЕрдиреБрд╡рд╛рдж ред

рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ


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

рдЕрдкрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд╛рдардХреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдХреЛрдб рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ: рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдкрдХреЗ рдХреЛрдб рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдЖрдк рдЕрдЧрд▓реЗ рдкрд╛рдардХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ!

рдЯрд┐рдкреНрдкрдгреА рд╢реИрд▓реА


рдПрдХрд░реВрдкрддрд╛ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рд╣реЛрдиреЗ рддрдХ // рдпрд╛ / * * * рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдЖрдк рдпрд╛ рддреЛ // рдпрд╛ / ** / рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ // рдмрд╣реБрдд рдмреЗрд╣рддрд░ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рд╣рдореЗрд╢рд╛ рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгреА рд╢реИрд▓реА рдХреЛ рдореМрдЬреВрджрд╛ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░реЗрдВред

рдлрд╝рд╛рдЗрд▓ рд╣реЗрдбрд░ рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ


рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рд▓рд╛рдЗрд╕реЗрдВрд╕ рд╣реИрдбрд░ рдбрд╛рд▓реЗрдВред

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

рдХрд╛рдиреВрдиреА рдЬрд╛рдирдХрд╛рд░реА рдФрд░ рд▓реЗрдЦрдХреЛрдВ рдХреА рд╕реВрдЪреА


рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рд╡рд┐рд╡рд░рдг рдХрд╛ рдкреНрд░рд╛рд░реВрдк рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд▓рд╛рдЗрд╕реЗрдВрд╕ (Apache 2.0, BSD, LGPL, GPL, рдЖрджрд┐) рдХреА рдЕрдкрдиреА рдбрд┐рдЬрд╛рдЗрди рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред

рдпрджрд┐ рдЖрдк рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрджрд▓рд╛рд╡ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд▓реЗрдЦрдХреЛрдВ рдХреА рдкрд┐рдЫрд▓реА рд╕реВрдЪреА рдХреЛ рд╣рдЯрд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдЕрджреНрдпрддрд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЕрдм рдХреЙрдкреАрд░рд╛рдЗрдЯ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдФрд░ рд▓реЗрдЦрдХреЛрдВ рдХреА рд╕реВрдЪреА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИред

рдлрд╝рд╛рдЗрд▓ рд╕рд╛рдордЧреНрд░реА


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

.H рдФрд░ .cc рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдирдХрд▓ рди рдХрд░реЗрдВ - рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рд╕рдордп рдХреЗ рд╕рд╛рде рдЕрд▓рдЧ рд╣реЛ рдЬрд╛рддреА рд╣реИрдВред

рдХрдХреНрд╖рд╛ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ


рдкреНрд░рддреНрдпреЗрдХ рдХрдХреНрд╖рд╛ рдХреА рдШреЛрд╖рдгрд╛ (рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд▓реЛрдЧреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░) рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд╕рд╛рде рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рд╡рд░реНрдЧ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИред

//   GargantuanTable. // : // GargantuanTableIterator* iter = table->NewIterator(); // for (iter->Seek("foo"); !iter->done(); iter->Next()) { // process(iter->key(), iter->value()); // } // delete iter; class GargantuanTableIterator { ... }; 

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

рдЖрдк рдХреНрд▓рд╛рд╕ рдХрдореЗрдВрдЯреНрд░реА рдореЗрдВ рд╢реЙрд░реНрдЯ рдХреЛрдб рдЙрджрд╛рд╣рд░рдг рднреА рджрд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реИред

рдЖрдорддреМрд░ рдкрд░, рдПрдХ рд╡рд░реНрдЧ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдлрд╛рдЗрд▓реЛрдВ ( .h рдФрд░ .cc ) рдореЗрдВ рдШреЛрд╖рд┐рдд / рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд░реНрдЧ рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдкреЗрдЪреАрджрдЧрд┐рдпреЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рд╕реНрд╡рдпрдВ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдХреЛрдб рдХреЗ рдХрд░реАрдм рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ


рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдШреЛрд╖рдгрд╛ рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдорд╛рдорд▓реЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░)ред рдлрд╝рдВрдХреНрд╢рди рдкрд░рд┐рднрд╛рд╖рд╛ рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИрдВред

рд╕рдорд╛рд░реЛрд╣ рдШреЛрд╖рдгрд╛


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

рдлрд╝рдВрдХреНрд╢рди рдШреЛрд╖рдгрд╛ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ:

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

рдПрдХ рдЙрджрд╛рд╣рд░рдг:

 //    .    //   .    //    GargantuanTable  . // //      . // //    : // Iterator* iter = table->NewIterator(); // iter->Seek(""); // return iter; //         , //    NewIterator()     . Iterator* GetIterator() const; 

рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕реНрдкрд╖реНрдЯ рдЪреАрдЬреЛрдВ рдкрд░ рдЪрдмрд╛рдирд╛ рдирд╣реАрдВ рд╣реИред

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

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

рдХрд╛рд░реНрдп рдХреА рдкрд░рд┐рднрд╛рд╖рд╛


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

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЖрдкрдХреЛ рдлрд╝рдВрдХреНрд╢рди рдХреА рдШреЛрд╖рдгрд╛ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХреЛ рджреЛрд╣рд░рд╛рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдП (рдПрдХ .h рдлрд╝рд╛рдЗрд▓ рдпрд╛ рдЗрд╕ рддрд░рд╣ рд╕реЗ)ред рдпрд╣ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╡рд░реНрдгрди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реИред

рдЪрд░ рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ


рдПрдХ рдЕрдЪреНрдЫреЗ рддрд░реАрдХреЗ рд╕реЗ, рдЪрд░ рдирд╛рдо рдХреЛ рддреБрд░рдВрдд рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдХреНрдпреЛрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЕрддрд┐рд░рд┐рдХреНрдд рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдХрдХреНрд╖рд╛ рдбреЗрдЯрд╛ рд╕рджрд╕реНрдп


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

рджреВрд╕рд░реА рдУрд░, рд╡рд┐рд╢реЗрд╖ (рдФрд░ рдЧреИрд░-рд╕реНрдкрд╖реНрдЯ) рдореВрд▓реНрдпреЛрдВ (рдирд▓реНрдЯрд░ рдпрд╛ -1) рдХреЗ рд╡рд┐рд╡рд░рдг рдЙрдкрдпреЛрдЧреА рд╣реЛрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

 private: //       // -1 - ,         int num_total_entries_; 

рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░


рд╕рднреА рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХреЛ рдЙрдирдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ (рдпрджрд┐ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ) рддреЛ рдЙрдиреНрд╣реЗрдВ рд╡реИрд╢реНрд╡рд┐рдХ рдХреНрдпреЛрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

 //   ,     const int kNumTestCases = 6; 

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ


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

рд╡рд░реНрдгрдирд╛рддреНрдордХ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ


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

 //    2.  x    for (int i = 0; i < result->size(); ++i) { x = (x << 8) + (*result)[i]; (*result)[i] = x >> 1; x &= 1; } 

рд▓рд╛рдЗрди рдЯрд┐рдкреНрдкрдгреА


рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд╕рд╛рде рдЧреИрд░-рд╕реНрдкрд╖реНрдЯ рдЕрд░реНрде рдХреЗ рд╕рд╛рде рдХреЛрдб рдХреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдкреВрд░рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд▓рд╛рд╣ рджреА рдЬрд╛рддреА рд╣реИ (рдЖрдорддреМрд░ рдкрд░ рд▓рд╛рдЗрди рдХреЗ рдЕрдВрдд рдореЗрдВ рд╕реНрдерд┐рдд)ред рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдХреЛ рдХреЛрдб рд╕реЗ 2 рд╕реНрдерд╛рдиреЛрдВ рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

 //   ,    mmap_budget = max<int64>(0, mmap_budget - index_->length()); if (mmap_budget >= data_size_ && !MmapData(mmap_chunk_bytes, mlock)) return; //    

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

рд╕рдорд╛рд░реЛрд╣ рддрд░реНрдХ рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ


рдЬрдм рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдирд┐рдореНрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

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

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

 //    ? const DecimalNumber product = CalculateProduct(values, 7, false, nullptr); 

рдХреЛрдб рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ:

 ProductOptions options; options.set_precision_decimals(7); options.set_use_cache(ProductOptions::kDontUseCache); const DecimalNumber product = CalculateProduct(values, options, /*completion_callback=*/nullptr); 

рдХреНрдпрд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ


рд╕реНрдкрд╖реНрдЯ рдордд рдХрд░реЛред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЙрди рдЪреАрдЬреЛрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╕реА ++ рдЬрд╛рдирдиреЗ рд╡рд╛рд▓реЗ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдпрд╣ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреЛрдб рдРрд╕рд╛ рдХреНрдпреЛрдВ рдХрд░рддрд╛ рд╣реИ (рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреЛрдб рдХреЛ рдЖрддреНрдо-рд╡рд░реНрдгрди рдХрд░рдирд╛)ред

рдХреЗ рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВ:

 //    . <-- :  ! auto iter = std::find(v.begin(), v.end(), element); if (iter != v.end()) { Process(element); } 

рдЗрд╕рдХреЗ рд╕рд╛рде:

 //  (Process) "element"     auto iter = std::find(v.begin(), v.end(), element); if (iter != v.end()) { Process(element); } 

рд╕реНрд╡-рд╡рд░реНрдгрди рдХреЛрдб рдХреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдЖрдо рддреМрд░ рдкрд░ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рд╕рдХрддреА рд╣реИ (рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ):

 if (!IsAlreadyProcessed(element)) { Process(element); } 

рд╡рд┐рд░рд╛рдо рдЪрд┐рд╣реНрди, рд╡рд░реНрддрдиреА рдФрд░ рд╡реНрдпрд╛рдХрд░рдг


рд╡рд┐рд░рд╛рдо рдЪрд┐рд╣реНрди, рд╡рд░реНрддрдиреА рдФрд░ рд╡реНрдпрд╛рдХрд░рдг рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ: рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд▓рд┐рдЦрд┐рдд рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдкрдврд╝рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИред

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

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

рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ TODO


рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдХреЛрдб рдпрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдкрд░реНрдпрд╛рдкреНрдд (рдордзреНрдпрд╡рд░реНрддреА, рд╕рд╣реА рдирд╣реАрдВ) рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП TODO рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

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

 // TODO(kl@gmail.com):  "*"  . // TODO(Zeke)   . // TODO(bug 12345):   " ". 

рдпрджрд┐ рдЖрдкрдХрд╛ TODO "рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕реЗ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд░рддрд╛ рд╣реИ" рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рддреЛ рдпрд╛ рддреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрд┐рдерд┐ ("рдирд╡рдВрдмрд░ 2005 рдореЗрдВ рд╕рд╣реА") рдпрд╛ рдПрдХ рдШрдЯрдирд╛ ("рдЙрд╕ рдХреЛрдб рдХреЛ рд╣рдЯрд╛рдПрдВ рдЬрдм рд╕рднреА рдЧреНрд░рд╛рд╣рдХ XML рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдВрдЧреЗ") рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрдВред

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

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


All Articles