C ++ рдХреЛ C ++ рдореЗрдВ рдмрджрд▓рдирд╛: рдореЗрдореЛрд░реА рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдирд╛

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

рдмреАрдЬ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдереЛрдбрд╝рд╛ рдЖрдЧреЗ рдЪрд▓реЗрдВ рдФрд░ рджрд┐рдЦрд╛рдПрдВ рдХрд┐ рдЖрдЦрд┐рд░рдХрд╛рд░, рдЗрд╕ рддрд░рд╣ рдХреА рд╕реВрдЪреА рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛:
new CustomLinkedList< double , ListBasedAllocator<CustomLinkedListNode< double , int >>, int >()


рддреБрд░рдВрдд рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рд╣рдо рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рджрд╛рд╡рд╛ рдХреА рдЧрдИ рд╕реВрдЪреА рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рдЖрдкрдХреЛ рдорд┐рд▓рдиреЗ рд╡рд╛рд▓реА рд╕рднреА рдЦреБрд╢реА рдХреЛ рдЦрддреНрдо рдХрд░ рджреЗрддрд╛ рд╣реИред

рдЦреБрдж рдХреЗ рд╕рдВрдХреЗрдд


рд╕реМрднрд╛рдЧреНрдп рд╕реЗ (!), .NET рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ C ++ рдЙрдирдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдкреНрд░рдмрдВрдзрд┐рдд рдХреЛрдб рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рдпрд╣ рд╕рдм рдЙрдкрд▓рдмреНрдз рд╣реИ

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

рдХрдВрдЯреЗрдирд░реЛрдВ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рд╕рдВрд╢реЛрдзрди


рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рдВрдЯрдирдХрд░реНрддрд╛рдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛ред рд╣рдо рдЗрд╕ рддрд░рд╣ рдХреЗ рдЖрд╡рдВрдЯрдирдХрд░реНрддрд╛ рдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ:
  1. /// <рд╕рд╛рд░рд╛рдВрд╢>
  2. /// рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЖрд╡рдВрдЯрди рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ред
  3. /// </ рд╕рд╛рд░рд╛рдВрд╢>
  4. /// <typeparam name = "T"> рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдЬреЛ рдХрд┐ рдПрд▓реЛрдХреЗрдЯрд░ </ typeparam> рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
  5. /// <typeparam name = "TPointer"> рдореЗрдореЛрд░реА рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдкреНрд░рдХрд╛рд░ </ typeparam>
  6. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ ICustomTypeAllocator <T, TPointer>
  7. {
  8. /// <рд╕рд╛рд░рд╛рдВрд╢>
  9. /// рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИ
  10. /// </ рд╕рд╛рд░рд╛рдВрд╢>
  11. TPointer рдЖрд╡рдВрдЯрд┐рдд ();
  12. /// <рд╕рд╛рд░рд╛рдВрд╢>
  13. /// рд╕реВрдЪрдХ рдореЗрдВ рдореЗрдореЛрд░реА рдореЗрдореЛрд░реАред
  14. /// рдпрджрд┐ checkErrors рдзреНрд╡рдЬ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рдЖрд╡рдВрдЯрди рдЪреЗрдХ рдХрд░рддрд╛ рд╣реИ
  15. /// рдХрд┐ рдпрд╣ рдкреЙрдЗрдВрдЯрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдЖрд╡рдВрдЯрд┐рдд рдореЗрдореЛрд░реА рдмреНрд▓реЙрдХ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реИ,
  16. /// рдФрд░, рдЕрдЧрд░ рдпрд╣ рдирд╣реАрдВ рд╣реИ, рддреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрддрд╛ рд╣реИред
  17. /// </ рд╕рд╛рд░рд╛рдВрд╢>
  18. /// <param name = "рдкреЙрдЗрдВрдЯрд░"> рдЗрдВрдЧрд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ </ param>
  19. /// <param name = "checkErrors"> </ param>
  20. рд╢реВрдиреНрдп рдореБрдХреНрдд (TPointer рд╕реВрдЪрдХ, рдмреВрд▓ рдЬрд╛рдБрдЪрдХ = рдЧрд▓рдд );
  21. /// <рд╕рд╛рд░рд╛рдВрд╢>
  22. /// рдПрдбреНрд░реЗрд╕ рдкреЙрдЗрдВрдЯрд░ рдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
  23. /// </ рд╕рд╛рд░рд╛рдВрд╢>
  24. /// <рдкрд░рдо рдирд╛рдо = "рд╕реВрдЪрдХ"> рдЙрд╕ рд╕реНрдореГрддрд┐ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдкрддрд╛ рдЬрд┐рд╕рдореЗрдВ рд╡рд╕реНрддреБ рд╕реНрдерд┐рдд рд╣реИред </ param>
  25. рдЯреА рдЗрд╕ [TPointer рд╕реВрдЪрдХ] { рдорд┐рд▓рддрд╛ рд╣реИ ; рд╕реЗрдЯ ; }
  26. /// <рд╕рд╛рд░рд╛рдВрд╢>
  27. /// рдРрд╕рд╛ рдкреЙрдЗрдВрдЯрд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬреЛ рд╣рдореЗрд╢рд╛ рдЕрдорд╛рдиреНрдп рд╣реЛрддрд╛ рд╣реИ
  28. /// </ рд╕рд╛рд░рд╛рдВрд╢>
  29. TPointer InvalidPointer { рдорд┐рд▓рддрд╛ рд╣реИ ; }
  30. /// <рд╕рд╛рд░рд╛рдВрд╢>
  31. /// рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреЙрдЗрдВрдЯрд░ рдорд╛рдиреНрдп рд╣реИ рдпрд╛ рдирд╣реАрдВред
  32. /// </ рд╕рд╛рд░рд╛рдВрд╢>
  33. /// <param name = "рдкреЙрдЗрдВрдЯрд░"> рдЪреЗрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЙрдЗрдВрдЯрд░ </ param>
  34. рдмреВрд▓ IsPointerValid (TPointer рд╕реВрдЪрдХ);
  35. }
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдЬрдм рд╣рдо рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рдпрд╛ рд╢рд╛рдпрдж рдкрд╣рд▓реЗ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдорд╕реНрдпрд╛ рдкрд░ рдЖрдПрдВрдЧреЗ:
var pointer = allocator.Allocate();
allocator[pointer].Value = 0;

рдпрджрд┐ рд╣рдордиреЗ рдЯрд╛рдЗрдк-рдЯреА рдХреЛ рдЯреА (рдЬреИрд╕реЗ, рдпрд╣ рд╣рдорд╛рд░рд╛ рдкреНрд░рд╛рдердорд┐рдХ рд▓рдХреНрд╖реНрдп рд╣реИ) рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдХрд╛рд░рдг рд╕рд░рд▓ рд╣реИ: рдЖрд╡рдВрдЯрдирдХрд░реНрддрд╛ [рд╕реВрдЪрдХ] рдСрдкрд░реЗрд╢рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрддреЗ рдкрд░ рдирд┐рд╣рд┐рдд рд╕рдВрд░рдЪрдирд╛ рдХреА рдПрдХ рдкреНрд░рддрд┐ рд╣реЛрдЧреА, рди рдХрд┐ рд╕рдВрд░рдЪрдирд╛ рд╣реАред рдореИрдВ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рджреЛ рддрд░реАрдХреЗ рдЬрд╛рдирддрд╛ рд╣реВрдВ:
  1. рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдЪрд░ рдХреЗ рд▓рд┐рдП рдЖрдмрдВрдЯрдХ [рд╕реВрдЪрдХ] рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╕рд╣реЗрдЬреЗрдВ, рд╕рдВрд░рдЪрдирд╛ рдкрд░ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдЪрд╛рд▓рди рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рд▓рд┐рдЦреЗрдВред
  2. рдЖрд╡рдВрдЯрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝реЗрдВ рдЬреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрддреЗ рдкрд░ рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рддрд░реАрдХреЗ рд╕реЗ рдореВрд▓реНрдп рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдЧрд╛ред
рджреВрд╕рд░реЗ рд░рд╛рд╕реНрддреЗ рд╕реЗ рдЪрд▓рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдкреНрд░рдХрд╛рд░ рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ рдЬреЛ рд╕рдВрджрд░реНрдн рджреНрд╡рд╛рд░рд╛ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рд╢реВрдиреНрдп рджреЗрддрд╛ рд╣реИ: public delegate void Modifier<T>( ref T value ); рдФрд░ рд╣рдорд╛рд░реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдПрдХ рд╕рдВрд╢реЛрдзрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝реЗрдВ:
  1. /// <рд╕рд╛рд░рд╛рдВрд╢>
  2. /// рджрд┐рдП рдЧрдП рдкреЙрдЗрдВрдЯрд░ рдкрддреЗ рдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдВрд╢реЛрдзрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ
  3. /// </ рд╕рд╛рд░рд╛рдВрд╢>
  4. /// <рдкрд░рдо рдирд╛рдо = "рд╕реВрдЪрдХ"> рдПрдХ рдкрд░рд╕реНрдкрд░ рд╡рд╕реНрддреБ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ </ param>
  5. /// <param name = "modifier"> рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдорд╛рди рдХреЛ рдмрджрд▓ рджреЗрдЧрд╛ </ param>
  6. рд╢реВрдиреНрдп рд╕реЗрдЯ (TPointer рд╕реВрдЪрдХ, рд╕рдВрд╢реЛрдзрдХ <T> рд╕рдВрд╢реЛрдзрдХ);

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреЙрдЗрдВрдЯрд░реНрд╕ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реАрдВ рдирд╣реАрдВ рд╣реИ


рдореИрдВ рдореБрдХреНрдд рдиреЛрдбреНрд╕ рдХреА рд╕реВрдЪреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрд╡рдВрдЯрдирдХрд░реНрддрд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛ред C ++ рдХреЗ рд╕рд╛рде, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдмрдВрдзрд┐рдд рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдореЗрдореЛрд░реА рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛, рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рдВрдШ рдХреЗ рд░реВрдк рдореЗрдВ рддрддреНрд╡ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдареАрдХ рдПрдХ рддрддреНрд╡ рд╣реИ - рд╕реВрдЪреА рдореЗрдВ рдЕрдЧрд▓реЗ рдореБрдХреНрдд рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХред рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╕рдВрджрд░реНрдн рдХреЗ рдмрд╛рд╣рд░ .NET рдЬреБрдбрд╝рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдЖрд╡рдВрдЯрдирдХрд░реНрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреЙрдЗрдВрдЯрд░ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреА рдЬрдЧрд╣ рдкреНрд░рджрд╛рди рдХрд░реЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкреЙрдЗрдВрдЯрд░ рдиреЛрдб {рдХреЗ рдПрдХрдорд╛рддреНрд░ рд╕рджрд╕реНрдп рдХреЗ рд╕рд╛рде ILinkedListNode рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░реЗрдВрдЧреЗ; рд╕реЗрдЯ; }, рдФрд░ рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдПрд▓рд┐рдорд┐рдиреЗрдЯрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рддрддреНрд╡ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред
public class ListBasedAllocator<T>: ICustomTypeAllocator<T, int > where T: ILinkedListNode< int >

рдЖрд╡рдВрдЯрди рдФрд░ рд╕реВрдЪреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрд╡рд╛рднрд┐рдорд╛рдиреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдореБрдлреНрдд рдиреЛрдбреНрд╕ рдХреА рд╕реВрдЪреА рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдпреВрдирд┐рдбрд╛рдпрд░реЗрдХреНрд╢рдирд▓ рд╕реВрдЪреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╕рдм рд╡рд░реНрдгрд┐рдд рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЙрд░реНрдореЗрди рдХреА рдкреБрд╕реНрддрдХ рдореЗрдВред
рдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб (C # рдореЗрдВ) рдФрд░ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓рд╛ (F # рдореЗрдВ) рдбрд╛рдЙрдирд▓реЛрдб рдпрд╛ рдпрд╣рд╛рдБ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ


рд╕рдВрднрд╡рдд:, рд╕реВрдЪреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдФрд░ рдЗрд╕реЗ рдПрдл # рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдХрд░ рдЯрд╛рдЗрдк рдЗрдВрдЯреНрд░реЗрдВрд╕ рдХреЗ рдХрд╛рд░рдг рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЖрдкрдХреЛ рдЕрднреА рддрдХ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЬрд╛рджреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред :)

рдкреБрдирд╢реНрдЪ рдпрд╣ рдЕрднреА рднреА рд╣реЛрдЧрд╛!

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


All Articles