рдЬреИрд╕рд╛ рдХрд┐ рдХреБрдЫ рджрд┐рдиреЛрдВ рдкрд╣рд▓реЗ рд╕реНрд▓реИрдХ рдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, unshift!
рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдХрд╛рдлреА рдЦрд░рд╛рдм рдирд╛рдо IMHO рд╣реИред рдЪреВрдВрдХрд┐ рдкреНрд░реА-1.0 рдЗрди рдЪреАрдЬреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
рдЪреВрдВрдХрд┐ prepend
рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, unshift!
-> pushfront!
рдФрд░ shift!
-> popfront!
рдХреИрд╕реЗ?
рд╣рдо рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдереЛрдХ рдирд╛рдо рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ:
| рдкреБрд░рд╛рдирд╛ | рдирдпрд╛ |
|-----|-----|
| push!
| rpush!
|
| pop!
| rpop!
|
| unshift!
| lpush!
|
| shift!
| lpop!
|
рдпрд╛ рдмрд╛рдПрдВ/рджрд╛рдПрдВ (рдкреНрд░рд╛рд░рдВрдн/рдЕрдВрдд? рдкреНрд░рдердо/рдЕрдВрддрд┐рдо?) рдХреАрд╡рд░реНрдб рдпрджрд┐ рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдмрд╛рдПрдБ рдФрд░ рджрд╛рдПрдБ рдереЛрдбрд╝рд╛ рдЕрд╕реНрдкрд╖реНрдЯ рд▓рдЧрддреЗ рд╣реИрдВ; рд╢рд╛рдпрдж @c42f
рдХрд╛ рдЖрдЧреЗ/рдкреАрдЫреЗ рдпрд╛ рдХреБрдЫ рдРрд╕рд╛ рд╣реА рд╕реНрдкрд╖реНрдЯ рд╣реЛрдЧрд╛?
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдмрд╛рдПрдВ рдФрд░ рджрд╛рдПрдВ рд╕реЗ рдЖрдЧреЗ рдФрд░ рдкреАрдЫреЗ рд╕реНрдкрд╖реНрдЯ рд╣реИрдВред рдмреЗрд╢рдХ, рдмрд╛рдПрдВ/рджрд╛рдПрдВ рд╢рдмреНрджрд╛рд╡рд▓реА рдХреЗ рд▓рд┐рдП рдпрд╣ рдереЛрдбрд╝рд╛ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╣рдо рд╡реИрдХреНрдЯрд░ рдХреЛ рд▓рдВрдмрд╡рдд рд░реВрдк рд╕реЗ рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рдЖрдЧреЗ/рдкреАрдЫреЗ рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реИрдВред
рдУрд╣, рдФрд░ рд╣рдо рдХрдЯреМрддреА рдореЗрдВ рдмрд╛рдПрдБ рдФрд░ рджрд╛рдПрдБ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА l
рдФрд░ r
рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдорд┐рд╕рд╛рд▓ рд╣реИ - рдЬрдм рддрдХ рдХрд┐ рд╣рдо рдЙрдиреНрд╣реЗрдВ рднреА рдмрджрд▓рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗред
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдмрд╛рдПрдВ рдФрд░ рджрд╛рдПрдВ рд╕реЗ рдЖрдЧреЗ рдФрд░ рдкреАрдЫреЗ рд╕реНрдкрд╖реНрдЯ рд╣реИрдВред
рдореБрдЭреЗ рднреА рдпрдХреАрди рдирд╣реАрдВ рд╣реИред front
рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЙрдЪреНрдЪ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЗ рд╕рд╛рде рдХрдо рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ (рдЬреИрд╕реЗ Base.front
) рдФрд░ back
рд╕рд╛рде рд╕рдВрдмрджреНрдз рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЬреБрдбрд╝рд╛рд╡ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИред
рд╢рд╛рдпрдж рдмреЗрд╣рддрд░ рд╡рд┐рдЪрд╛рд░: head
- tail
рдФрд░ first
- last
рдЙрдирдХреЗ рдкреВрд░реНрд╡рд╡рд░реНрддреА рдЕрд░реНрдереЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрдо рдЕрд╕реНрдкрд╖реНрдЯ рд▓рдЧрддреЗ рд╣реИрдВ?
hpush!
, hpop!
, tpush!
рдФрд░ tpop!
рдЦрд░рд╛рдм рдирд╣реАрдВ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╛рдПрдБ рдФрд░ рджрд╛рдПрдБ рдХреЛ foldl
рдФрд░ foldr
рдЖрджрд┐ рдореЗрдВ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рдХреНрд░рдо рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рджрд░рдЕрд╕рд▓, рдЪреВрдВрдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ l
рдФрд░ r
рдЕрдВрдд рдореЗрдВ, рд╕рдорд╛рди рдирд╛рдо pushl!
, popl!
, pushr!
рдФрд░ popr!
рдЬреЛ рдореБрдЭреЗ рдкрд╕рдВрдж рд╣реИрдВ :)
рд╕рднреА рдЪрд╛рд░ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ, рдкреНрд░рддреНрдпрдп рд╕рдВрд╕реНрдХрд░рдг pushl!
, popl!
, pushr!
рдФрд░ popr!
рдореБрдЭреЗ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рд▓рдЧрддреЗ рд╣реИрдВред
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ push!
рдФрд░ pop!
рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЖрд░рдХреНрд╖рдг рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХрддрд╛рд░ рдореЗрдВ рдзрдХреЗрд▓рдиреЗ рдФрд░ рдкреЙрдк рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреЛрдИ "рджрд╛рдПрдВ" рдФрд░ "рдмрд╛рдПрдВ" рдирд╣реАрдВ рд╣реИ, рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рд╛рдХреГрддрд┐рдХ рдХреНрд░рдо рдФрд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рд╣реИ рдЬреЛ рдХрдо рд╕реЗ рдХрдо/рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рддрддреНрд╡ рджреЗрддрд╛ рд╣реИред pop!
рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рднреА рд╣реИ рдЬреЛ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдЬреИрд╕реЗ рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреБрдВрдЬреА рд▓реЗрддрд╛ рд╣реИ, рдФрд░ popr!
рднреА рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рдХреНрд░рд┐рдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреНрдпрд╛рджрд╛ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ push!
рдФрд░ pop!
рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреНрдпреВ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡реЗ рдХреЗрд╡рд▓ рдЙрд░реНрдл pushr!
рдФрд░ popr!
Arrays рдХреЗ рд▓рд┐рдП рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореБрдЭреЗ shift!
рдФрд░ unshift!
, рдпрд╣ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рднреА рдРрд╕рд╛ рд╣реА рд╣реИред рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдЖрд░рдХреНрд╖рд┐рдд рдХрд░реЗрдВ!
рдЕрдм рддрдХ, рдореБрдЭреЗ рдкрд╣рд▓реА рдкреЛрд╕реНрдЯ рдХрд╛ рд╕реБрдЭрд╛рд╡ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛ред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗрд░рд┐рдПрдВрдЯ рдХреЗ рдмреАрдЪ рд╕рдорд╛рдирддрд╛ рдкрд░ рдЬреЛрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП push*!
рдФрд░ pop*!
рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдФрд░ рддрд╛рдХрд┐ рдЯреИрдм рдкреВрд░реНрдг рд╣реЛрдиреЗ рдкрд░ рд╡реЗрд░рд┐рдПрдВрдЯ рдЖрд╕рд╛рдиреА рд╕реЗ рдорд┐рд▓ рд╕рдХреЗрдВред (рдореБрдЭреЗ r
рдФрд░ l
рдкреНрд░рддреНрдпрдп рд╕реБрдЭрд╛рд╡ рдкрд╕рдВрдж рд╣реИрдВред)
-2 рд╕реЗ r
рдФрд░ l
рд╢рдмреНрджрд╛рд╡рд▓реАред рдирд╛рдо рдереЛрдбрд╝реЗ рдмрджрд╕реВрд░рдд рд╣реИрдВ, рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ 4 рд╣реИрдВред рдУрдкреА рдХреЗ рд╕реБрдЭрд╛рд╡ рдХреА рддрд░рд╣ рдореИрдВ рдХреЗрд╡рд▓ рд╢рд┐рдлреНрдЯ рдФрд░ рдЕрдирд╢рд┐рдлреНрдЯ рдХрд╛ рдирд╛рдо рдмрджрд▓реВрдВрдЧрд╛ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╢рд┐рдлреНрдЯ рдФрд░ рдЕрдирд╢рд┐рдлреНрдЯ рдХрд╛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЙрдиреНрд╣реЗрдВ рднреА рд░рдЦ рд╕рдХреЗрдВред рдРрд╕реЗ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдФрд░ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╢рдмреНрджреЛрдВ рдХреЛ рдкреЗрд╢ рдХрд░рдирд╛ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реЛрдЧрд╛ред
@JeffBezanson C++ рд╡реЗрдХреНрдЯрд░ push_front
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореМрдЬреВрджрд╛ рдирд╛рдореЛрдВ рдХреЛ shift
рдореЗрдВ sh
, рдФрд░ рд╕рдВрднрд╡рддрдГ рдкрд░реНрд▓ рдиреЗ рдЗрд╕реЗ рдЙрдард╛рдпрд╛ рдФрд░ unshift
(http://www.perlmonks.org) рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ред /?node_id=613144) рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ (php, Javascript, ...?) рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реА рдорд┐рд╕рд╛рд▓реЗрдВ рд╣реИрдВред
рдореБрдЭреЗ рдЙрдЪрд┐рдд рдЕрдВрдЧреНрд░реЗрдЬреА рд╢рдмреНрдж рдкрд╕рдВрдж рд╣реИрдВ... :) ( unshift
1972 рд╕реЗ рдУрдИрдбреА рдбреЗрдЯрд┐рдВрдЧ рдореЗрдВ рд╣реИред)
рдпрд╛ рдХрдо рд╕реЗ рдХрдо shift!
рдФрд░ unshift!
рдореЗрдВ pop!
рдФрд░ push!
рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░реЗрдВ:
help?> pop!
search: pop! popdisplay apropos deepcopy precompile __precompile__ peakflops promote_type
also see: `shift!` `unshift!` `push!`
pop!(collection, key[, default])
Delete and return the mapping for key if it exists in collection, otherwise return default, or
throw an error if default is not specified.
рдПрдХ рдФрд░ рд╡рд┐рдЪрд╛рд░: push/pop!(first, x, ...)
рдФрд░ push/pop!(last, x, ...)
ред
рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ pop!(min, x)
рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдХрд░рддрд╛ рд╣реИред
рдпрд╛ рдХрдо рд╕реЗ рдХрдо
shift!
рдФрд░unshift!
рдореЗрдВpop!
рдФрд░push!
рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░реЗрдВ:
#реирейренреореп . рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд
рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░, @TotalVerb!
рдпрд╛ splice!
/ insert!
рд╕рд╛рде рд╡рд┐рд▓рдп рдХрд░реЗрдВ, first
рдФрд░ last
рд╕рд╛рде рдЫрджреНрдо-рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ?
рдПрдХ рдФрд░ рд╡рд┐рдЪрд╛рд░: рдкреБрд╢/рдкреЙрдк! (рдкрд╣рд▓реЗ, рдПрдХреНрд╕, ...)
рдЖрд╣ рдХреНрдпрд╛? рдареАрдХ рд╣реИ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд░рдЪрдирд╛рддреНрдордХ рд╡рд┐рдЪрд╛рд░ рд╣реИ :-)
рдлрд╝рдВрдХреНрд╢рди first
рдФрд░ last
рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ, рдмрдЬрд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдЙрдирдХреЗ рдЕрдВрджрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЛрдб рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рд╣реЛред рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рдЪреАрдЬ рдХреЛ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдореЗрдВ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рд╕реЗ рдЕрдЬреАрдм рдЙрд▓рдЭрдиреЗрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдХрднреА рднреА рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рдерд╛, рддреЛ рдХреНрдпрд╛? рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ first
рдФрд░ last
рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреАред
рдореБрдЭреЗ рдХрд╣рдирд╛ рд╣реИ, рдЬрд┐рддрдирд╛ рдЕрдЪреНрдЫрд╛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рд╣реИ - рдпрд╣ рдореБрдЭреЗ рдЗрдВрдбреЗрдХреНрд╕рд┐рдВрдЧ рдореЗрдВ рдХрдореА рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @mbauman рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреА рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ X[mean, :, sum]
- рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдореМрд▓рд┐рдХ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдлреИрдВрд╕реА рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рдордп рдореИрдВ рдЬрд┐рди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдВ рд╡реЗ рд╣реИрдВ:
shift!
рдФрд░ unshift!
рд╕реЗ popl!
рдФрд░ pushl!
рдирд╛рдо рдмрджрд▓реЗрдВредpop!
рдФрд░ push!
рд╕реЗ popr!
рдФрд░ pushr!
рдирд╛рдо рдмрджрд▓реЗрдВредpop!
рдФрд░ push!
рдЙрдкрдирд╛рдо popr!
рдФрд░ pushr!
редрдореИрдВ рдХрд╛рдлреА рд╣рдж рддрдХ рез рдФрд░ реи рдХреЗ рдмреАрдЪ рд╣реВрдБ, рд▓реЗрдХрд┐рди рей рдФрд░ рек рдХреЗ рд▓рд┐рдП рднреА рдХреБрдЫ рдЕрдкреАрд▓ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 1) рдпрд╣ рдмрд╣реБрдд рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╣реА рдСрдкрд░реЗрд╢рди (рдкреБрд╢рд┐рдВрдЧ рдпрд╛ рдкреЙрдкрд┐рдВрдЧ) рдХреЛ рдХрд┐рд╕реА рд╕рд░рдгреА рдХреЗ рдЖрд░рдВрдн рдФрд░ рдЕрдВрдд рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдХрдо рд╕реЗ рдХрдо рд╕рдВрдмрдВрдзрд┐рдд рдирд╛рдо рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП; push!
рдФрд░ shift!
рдПрдХ рдЕрдирдЬрд╛рди рдЬреЛрдбрд╝реА рд╣реИрдВ; 2) рд╢рдмреНрдж shift!
рдХреЛ рдмрд┐рдЯ рд╢рд┐рдлреНрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рднреНрд░рдорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ >>
, рдЬреИрд╕рд╛ рдХрд┐ "рд╢рд┐рдлреНрдЯ" рдХреЗ рд▓рд┐рдП рдбреЙрдХреНрд╕ рдЦреЛрдЬ рдХрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ; 3) рдХрдИ рдЬреВрд▓рд┐рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдкрд╛рд╕ рд╡реИрд╕реЗ рднреА рдПрдХ рдкрд░реНрд▓/рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреГрд╖реНрдарднреВрдорд┐ рдирд╣реАрдВ рд╣реЛрдЧреАред
рдореИрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЙрдкрд░реЛрдХреНрдд рдкрдж рдореЗрдВ рд╡рд┐рдХрд▓реНрдк 2 рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдВред
рд▓реЗрдХрд┐рди, рдЕрдЧрд░ рд╣рдо рдЙрдирдХрд╛ рдирд╛рдо рдмрджрд▓ рджреЗрдВ, рддреЛ circshift!
рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рдХрд░реЗрдВ?
рд╕реНрдЯреАрдлрди рдХрд╛ рд╡рд┐рдХрд▓реНрдк 2 рдпрд╛ 4 рдореБрдЭреЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ circshift!
рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ pop
рдЬреИрд╕рд╛ рдСрдкрд░реЗрд╢рди рдирд╣реАрдВ рд╣реИ
рдкреНрд░рд╕реНрддрд╛рд╡:
| рдкреБрд░рд╛рдирд╛ | рдирдпрд╛ | рдЙрдкрдирд╛рдо |
|----:|----:|----:|
| push!
| pushr!
| push!
|
| pop!
| popr!
| pop!
|
| unshift!
| pushl!
| |
| shift!
| popl!
| |
рдореЗрд░рд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдХрд░реНрд╖рдХ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рд╣рдо push!
рдФрд░ pop!
рдХреЛ рдЙрди рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЖрдк рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдЯреИрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╛рдИрдВ рдУрд░ рд╣реИ рдпрд╛ рдирд╣реАрдВ рдпрд╛ рдареАрдХ рд╣реИ рдЖрдк рдзрдХреНрдХрд╛ рджреЗ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╕реЗ рдкреЙрдкрд┐рдВрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдЗрдореЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ front
рдФрд░ back
рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдХрд╛рдлреА) abbrevating рд╕реЗ рд╕рд╛рдл left
рдФрд░ right
ред
рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рд╣рдорд╛рд░реЗ рд╡реИрдХреНрдЯрд░ рд▓рдВрдмрд╡рдд рд╣реИрдВ (рдЗрд╕рд▓рд┐рдП рдпрд╣ рдКрдкрд░/рдиреАрдЪреЗ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП) ред рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдкреНрд░рд╛рд░рдВрдн/рд╕рдорд╛рдкреНрддрд┐ рдпрд╛ рдкреНрд░рдердо/рдЕрдВрддрд┐рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдмрд╛рдПрдВ/рджрд╛рдПрдВ рдореБрдЭреЗ рдареАрдХ рд▓рдЧрддрд╛ рд╣реИ; рдпрд╣ рд╣рдорд╛рд░реА рдХрдореА рд╢рдмреНрджрд╛рд╡рд▓реА ( foldl
рдФрд░ foldr
) рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИ, рдФрд░ рдХреИрд╕реЗ рд╡реИрдХреНрдЯрд░ рдЖрдорддреМрд░ рдкрд░ [a,b,c,тАж]
рджрд░реНрдЬ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ print
рджреНрд╡рд╛рд░рд╛ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрддреЗ рд╣реИрдВред
рдмрд╛рдПрдБ/рджрд╛рдПрдБ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджреВрд╕рд░реА рдЕрдЪреНрдЫреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдПрдХ рд╕реБрд╕реНрдерд╛рдкрд┐рдд рдПрдХ-рд╡рд░реНрдг рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо рд╣реИред
рдЧрдВрднреАрд░рддрд╛ рд╕реЗ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рд╡реЗрдХреНрдЯрд░ рдХрд╛ рдХреМрди рд╕рд╛ рд╕рд┐рд░рд╛ рдЖрдЧреЗ рдпрд╛ рдкреАрдЫреЗ рд╣реИред рдХреНрдпрд╛ рдлреНрд░рдВрдЯ рдЗрдВрдбреЗрдХреНрд╕ 1 рд╣реИ рдпрд╛ рд╡рд╣ рдмреИрдХ рд╣реИ? рд╣рд╛рдВ, рд╣рдо рдХрднреА-рдХрднреА рдЕрдкрдиреЗ рд╡реИрдХреНрдЯрд░ рдХреЛ рд▓рдВрдмрд╡рдд рд░реВрдк рд╕реЗ рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдмрд╛рдПрдВ рд╕реЗ рджрд╛рдПрдВ рднреА рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдИ рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗ рдмрд╛рдПрдВ/рджрд╛рдПрдВ рдирд╛рдордХрд░рдг рдХрд╛ рд▓рдЧрд╛рддрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдХреИрд╕реЗ рд╕рд┐рд░реНрдл рд╕рдВрд▓рдЧреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирдП рддрд░реАрдХреЗ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ! рдФрд░ рддреИрдпрд╛рд░ рдХрд░реЛ! рдЬрд╣рд╛рдВ рджреВрд╕рд░рд╛ рддрд░реНрдХ рдПрдХ рдЕрджрд┐рд╢ рд░рд╛рд╢рд┐ рд╣реИ?
рдпрд╣ рдмрд╛рддрдЪреАрдд https://github.com/JuliaLang/julia/issues/23902#issuecomment-332615200 рдкрд░ рд╡рд╛рдкрд╕ рдЖ рдЧрдИ рд╣реИ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ https://github.com/JuliaLang/julia/issues/23902#issuecomment-332668546 , рдпрд╛рдиреА рдпрд╛ рддреЛ head
/ tail
рдпрд╛ first
/ last
рд╢рдмреНрджрд╛рд╡рд▓реА? :)
рдУрд╣, рдЪрд░реНрдЪрд╛ рдХреЛ рд▓рдВрдмрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред рдореЗрд░рд╛ рдХрд╣рдирд╛ рдерд╛ рдХрд┐ рд╣рдореЗрдВ рдирдП рд╢рдмреНрджреЛрдВ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдореМрдЬреВрджрд╛ рд╢рдмреНрджреЛрдВ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдУрд╣, рдЪрд░реНрдЪрд╛ рдХреЛ рд▓рдВрдмрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред рдореЗрд░рд╛ рдХрд╣рдирд╛ рдерд╛ рдХрд┐ рд╣рдореЗрдВ рдирдП рд╢рдмреНрджреЛрдВ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдореМрдЬреВрджрд╛ рд╢рдмреНрджреЛрдВ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдХреНрд╖рдорд╛ рдХрд░реЗрдВ @phaverty! рд╣рдордиреЗ рд╕рд┐рдореНрдпреБрд▓рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ред рдореЗрд░реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгреА рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп @StefanKarpinski
рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдереА :)ред рд╢реНрд░реЗрд╖реНрда!
рдореБрдЭреЗ popfirst!
, pushfirst!
, poplast!
, pushlast!
рд╕рд╛рде pop!
рдФрд░ push!
рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдкрд╕рдВрдж рд╣реИ рдмрд╛рдж рд╡рд╛рд▓рд╛ред
рдЬрд╣рд╛рдВ рджреВрд╕рд░рд╛ рддрд░реНрдХ рдПрдХ рдЕрджрд┐рд╢ рд░рд╛рд╢рд┐ рд╣реИ?
рд╕реНрдХреЗрд▓рд░ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред
"рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕реНрдХреЗрд▓рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред"
рдУрд╣ рд╕рдордЭрд╛ред рдЖрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ,
рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВ!(x::рд╡реЗрдХреНрдЯрд░{T}, y::T)
, рд▓реЗрдХрд┐рди рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ y "рдХреБрдЫ рдРрд╕рд╛ рд╣реЛ рдЬрд┐рд╕реЗ T рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХреЗ"ред рд▓реЗрдХрд┐рди, рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо (рдЕрднреА рддрдХ?) рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реЗрдЯ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдмрдорд░ред
рдЖрдЗрдП рдПрдХ (рдЧреИрд░-рдмрд╛рдзреНрдпрдХрд╛рд░реА, рд╕реВрдЪрдирд╛рддреНрдордХ) рд╡реЛрдЯ рджреЗрдВ:
pushr!
, popr!
, pushl!
рдФрд░ popl!
рд╕рд╛рде push!
рдФрд░ pop!
рдкрд╣рд▓реЗ рджреЛ рдХреЗ рд▓рд┐рдП рдЙрдкрдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВрдЗрдореЛрдЬреА рдХрд╛ рд╡рд╣ рдЪреБрдирд╛рд╡ рдХреБрдЫ рд╣рдж рддрдХ рдкрдХреНрд╖рдкрд╛рддреА рд╣реИ;)ред
рдФрд░: +1: рдУрдкреАрдПрд╕ рд╕реБрдЭрд╛рд╡ рдкрд░ рдпрджрд┐ рдЖрдкрдХреЛ рд╡рд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ;)
рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реЗ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдмрд╛рддрдЪреАрдд рдореЗрдВ рдХреБрдЫ рд╢реЛрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдХреЗрд╡рд▓ рд╕рд╛рдордиреЗ рд╕реЗ рдорд╛рдлреА рдорд╛рдБрдЧрддрд╛ рд╣реВрдБред рдЕрдм рддрдХ рдЬреВрд▓рд┐рдпрд╛ рдХреЗ push!
, pop!
, shift!
, рдФрд░ unshift!
рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рдирд╛рдо рдкрд░реНрд▓, рд░реВрдмреА рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ (https://en .wikipedia.org/wiki/Double-ended_queue#Operations)ред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ рдЗрди рдирд╛рдореЛрдВ рд╕реЗ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдкрд░реНрд▓ рдореЗрдВ рд╕реАрдЦрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рд╢рд┐рдлреНрдЯ/рдЕрдирд╢рд┐рдлреНрдЯ рдпрд╛рджрдЧрд╛рд░ рдирд╣реАрдВ рд╣реИрдВред рдПрдХ рдРрд╕рд╛ рд╢рд┐рд╡рд┐рд░ рднреА рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╕реЛрдЪрддрд╛ рд╣реИ рдХрд┐ рдкреБрд╢/рдкреЙрдк рдПрдХ рдЦрд░рд╛рдм рдкреВрд░рдХ рдЬреЛрдбрд╝реА рд╣реИ ред
рдПрдХ рдФрд░ рд╡рд┐рдЪрд╛рд░:
push/pop!(first, x, ...)
рдФрд░push/pop!(last, x, ...)
ред
рдЕрдЧрд░ рд╣рдореЗрдВ рдЗрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдЬрд╛рдирд╛ рд╣реИ рддреЛ рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреВрдВрдЧрд╛ рдХрд┐ рд╣рдо рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ enqueue!
рдФрд░ dequeue!
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдореБрдЭреЗ рдореВрд▓ рдирд╛рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреЛ рдкрд╕рдВрдж рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рд╕рд┐рд░реНрдл рдПрдХ рд╢рдмреНрдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рд╢рдмреНрдж рдХреЗ рд▓рд┐рдП рд░рдЦ рд▓реЗрдХрд┐рди рдХреБрдЫ рдЕрдЪреНрдЫреЗ-рд╕реА рдЬреЛрдбрд╝реА рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдХреЗ рд╕рд╛рде рдЖрдпрд╛ рдерд╛ push!
рдФрд░ pull!
рдлреАрдлреЛ рдХреЗ рд▓рд┐рдП рдФрд░ push!
рдФрд░ pop!
FILO рдХреЗ рд▓рд┐рдПред рдпрд╣ рдЕрдВрдд рдХреЗ рдмрдЬрд╛рдп рдХрддрд╛рд░ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдкреБрд╢/рдкреЙрдк рдХрд╛рдо рдХрд░реЗрдЧрд╛:
рдкреБрд░рд╛рдирд╛ | рдирдпрд╛
-------|-----
рдзрдХреЗрд▓рдирд╛! | рд░рдЦрдирд╛!
рдкреЙрдк! | рдЦреАрдВрдЪрдирд╛!
рдЦрд┐рд╕рдХ рдЬрд╛рдирд╛! | рдзрдХреЗрд▓рдирд╛!
рдЕрдирд╢рд┐рдлреНрдЯ! | рдкреЙрдк!
рд╣рдо рдЕрдВрдд рдореЗрдВ рдкреБрд╢/рдкреЙрдк рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрдо рдмреНрд░реЗрдХрд┐рдВрдЧ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╢реБрд░реБрдЖрдд рдореЗрдВ рдбрд╛рд▓/рдкреБрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдЪреАрдЬреЗрдВ рдХреБрдЫ рд╣рдж рддрдХ рднреНрд░рдорд┐рдд рд╣реЛ рдЬрд╛рдПрдВрдЧреАред
рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк append!
рдФрд░ prepend!
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрд░рдорд╢рдГ push!
рдФрд░ shift!
рд╕рдВрджрд░реНрдн рдореЗрдВ рдХрд░рдирд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ dequeuing рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЙрдЪрд┐рдд рд╢рдмреНрдж рдирд╣реАрдВ рд╣реИ рдФрд░ behead
рдФрд░ curtail
рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рдереЗ рдЬрд┐рдирдХреЗ рд╕рд╛рде рдореИрдВ рдЖ рд╕рдХрддрд╛ рдерд╛ ...
@phaverty рдЬрдм рддрдХ Vector{Any}
рд╣реЛрдирд╛ рд╕рдВрднрд╡ рд╣реИ, рдпрд╣ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реЛрдЧрд╛ред
рдореИрдВ рдЗрд╕реЗ рджреЛрдмрд╛рд░рд╛ рдкреЛрд╕реНрдЯ рдХрд░реВрдВрдЧрд╛: https://github.com/JuliaLang/julia/issues/23902#issuecomment -332919287
@omus shift!
рд╕реЗ push!
рдирд╛рдо рдмрджрд▓рдирд╛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд▓рдЧрддрд╛ рд╣реИред
append!
рджреЛ рд╕рдВрдЧреНрд░рд╣ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ push!
et. рдЕрд▓. рдПрдХ рддрддреНрд╡ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдИрдПрдордУ рдЙрд╕ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣рд╛рдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЕрдВрдд рдореЗрдВ, рд╣рдо рд╣рдореЗрд╢рд╛ рдпреВрдирд┐рдХреЛрдб рдХреЛ рдЕрдкрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
рдПрдПрд╕рд╕реАрдЖрдИрдЖрдИ | рдпреВрдирд┐рдХреЛрдб | рдпреВрдирд┐рдХреЛрдб рдирд╛рдо | рдЙрдкрдирд╛рдо
---|---|---|---
рдзрдХреЗрд▓рдирд╛! | | рдмрд╛рд░ рд╕реЗ рдмрд╛рдПрдБ рддреАрд░ |
рдкреЙрдк! | | рдмрд╛рд░ рд╕реЗ рджрд╛рд╣рд┐рдиреА рдУрд░ рддреАрд░ | рдореИрдкрд╕реНрдЯреЛ
рдЦрд┐рд╕рдХ рдЬрд╛рдирд╛! | | рдмрд╛рд░ рд╕реЗ рджрд╛рд╣рд┐рдиреА рдУрд░ рддреАрд░ |
рдЕрдирд╢рд┐рдлреНрдЯ! | | рдмрд╛рд░ рд╕реЗ рджрд╛рд╣рд┐рдиреА рдУрд░ рддреАрд░ | рдореИрдкреНрд╕рдлреНрд░реЙрдо
рдпреВрдирд┐рдХреЛрдб рдореЗрдВ рдмрд╛рд░ рдХреЛ рдХрддрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЛрдЪреЗрдВред ~рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдЗрди рдпреВрдирд┐рдХреЛрдб рд╡рд░реНрдгреЛрдВ рдореЗрдВ рдЖрд░рдИрдкреАрдПрд▓ рдореЗрдВ рдЕрдЪреНрдЫреЗ рдЙрдкрдирд╛рдо рдирд╣реАрдВ рд╣реИрдВ рдЬреЛ рдореИрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ ~ред
рдирд╛рдо рдмрджрд▓ рд░рд╣рд╛ рд╣реИ
shift!
рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПpush!
рдЕрдирд╛рд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рднреНрд░рд╛рдордХ рд▓рдЧрддрд╛ рд╣реИред
рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдХрд╣реВрдВ рддреЛ рдЕрдЧрд░ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рддрд░реАрдХрд╛ рдЕрдкрдирд╛рддреЗ рд╣реИрдВ рддреЛ рдореБрдЭреЗ рджреБрдЦ рд╣реЛрдЧрд╛ред рд╡рд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдирд╡рд╛рдЧрдВрддреБрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рдмрдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬреВрд▓рд┐рдпрд╛ рдХреЗ рдореМрдЬреВрджрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИред
@omus , рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП \mapsto
ред
рдареАрдХ рд╣реИ, рдореИрдВрдиреЗ рдЭреВрда рдмреЛрд▓рд╛: рдореБрдЭреЗ рдПрдХ рдФрд░ рдмрд╛рдд рдХрд╣рдирд╛ рд╣реИред рдЕрдзрд┐рдХ рдЧрдВрднреАрд░ рд╕реБрдЭрд╛рд╡ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдо рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЕрдЪреНрдЫрд╛ рдзрдХреНрдХрд╛/рдкреЙрдк рдЦреЛ рджреЗрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдСрдкрд░реЗрд╢рди рдХреЗ рдЪрд▓рддреЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реИ:
рдкреБрд░рд╛рдирд╛ | рдирдпрд╛
-- | --
рдзрдХреЗрд▓рдирд╛! | рдЖрдЦрд░реА рдЕрдВрджрд░!
рдкреЙрдк! | рдЖрдЦрд░реА рдмрд╛рд╣рд░!
рдЦрд┐рд╕рдХ рдЬрд╛рдирд╛! | рдкрд╣рд▓рд╛!
рдЕрдирд╢рд┐рдлреНрдЯ! | рдкрд╣рд▓реЗ рдмрд╛рд╣рд░!
рдЗрди рд╕реБрдЭрд╛рд╡реЛрдВ рдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЛ рд╡реЛрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдХреБрдЫ рдЦреБрджрд╛рдИ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдореИрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╕рд╣реА рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдкрд╣реБрдВрдЪрд╛ рдХрд┐ рдХрдВрдкреНрдпреВрдЯрд░ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХреЛрдВ рдиреЗ рдкреБрд╢/рдкреЙрдк рд╢рдмреНрджрд╛рд╡рд▓реА рдХреЛ рдЕрдкрдирд╛рдпрд╛ рдФрд░ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рд╢рд┐рдлреНрдЯ/рдЕрдирд╢рд┐рдлреНрдЯ рдХрд╛ рдХреНрдпрд╛ рдирд╛рдо рд╣реИред
рдЕрдм рдЬрдмрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рд░рдВрддрд░ рддрд╣ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреАрд╡рд░реНрдб рддрд░реНрдХ рддреЗрдЬрд╝, рд╕рд╣реА рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП? рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 2 рдХреЗ рдмрдЬрд╛рдп рдЗрд╕рдХреЗ рд▓рд┐рдП 4 рдХрд╛рд░реНрдп рдХреНрдпреЛрдВ рд╣реЛрдВрдЧреЗ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рдмрд╣реБ-рд╢рдмреНрдж рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЛ рдмрдврд╝рд╛рд╡рд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рддреЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рдордиреЛрд░рдВрдЬрдХ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдпрд╣рд╛рдВ рдпрдерд╛рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмреЗрд╣рддрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
рдЬреИрд╕рд╛ рдХрд┐ рдордиреЛрд░рдВрдЬрдХ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдпрд╣рд╛рдВ рдпрдерд╛рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмреЗрд╣рддрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред
рдУрдкреА рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдХреА рд░рд╛рд╢рд┐ рдкрд░реНрдпрд╛рдкреНрдд рд▓рдЧрддреА рд╣реИ? рд╢рд╛рдпрдж рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рдереЛрдбрд╝рд╛ рд╕рдордпрдкреВрд░реНрд╡ рд╣реИ? :)
рд╣рд╛рдВ, рдУрдкреА рдХреЗ рд╕реБрдЭрд╛рд╡ рдореЗрдВ 11 рдКрдкрд░ рдФрд░ 0 рдиреАрдЪреЗ рд╣реИрдВ ...
рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреА рд╕рд╛рдорд╛рдиреНрдп рдзрд╛рд░рдгрд╛ рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛рдпрд┐рдд рдХрд┐рдпрд╛, рди рдХрд┐ рдЙрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реБрдЭрд╛рд╡ рдХреЗ рд▓рд┐рдПред
рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рд╛рд░реА рдЪрд░реНрдЪрд╛ рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕рдореНрдореЛрд╣рдХ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рдорд┐рд▓рд╛ред
рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ pushfront!
рдЕрднреА рднреА рдореЗрд░рд╛ рдкрд╕рдВрджреАрджрд╛ рдФрд░ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдПрдХ рд╕рд╛рд░реНрдердХ рдирд╛рдордХрд░рдг рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд┐рд░реНрдл рдореЗрд░рд╛ рд╕реА ++ рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдореБрдЭреЗ pushfront!
рдФрд░ popfront!
ред
рдареАрдХ рд╣реИ, рдореИрдВрдиреЗ pushfront!
/ popfront!
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП #25100 рдореЗрдВ рдПрдХ рдкреАрдЖрд░ рдмрдирд╛рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдиреНрдпреВрдирддрдо рдЪреАрдЬ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо unshift!
рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ unshift!
рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд╛ рд░рд╣рд╛ рд╣реИ (рдП) рдпрд╣ рдпрдерд╛рд╕реНрдерд┐рддрд┐ рд╣реИ, рдФрд░ (рдмреА) рдпрд╣ рдкрд░реНрд▓/рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ/php/рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдкрд░реНрд▓ рд╕реЗ рд╕рдВрджрд┐рдЧреНрдз рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ
рдЗрд╕реЗ рдиреАрдЪреЗ рд╢реВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВ ;-)
рдЬреИрд╕рд╛ рдХрд┐ рдиреЗ #25100 рдореЗрдВ
enqueue!(::typeof(first), a, item) = unshift!(a, item)
enqueue!(::typeof(last), a, item) = push!(a, item)
dequeue!(::typeof(first), a) = shift!(a)
dequeue!(::typeof(last), a) = pop!(a)
julia> enqueue!(::typeof(first), a, item) = unshift!(a, item);
julia> enqueue!(::typeof(last), a, item) = push!(a, item);
julia> dequeue!(::typeof(first), a) = shift!(a);
julia> dequeue!(::typeof(last), a) = pop!(a);
julia> foo = [1, 2, 3]
3-element Array{Int64,1}:
1
2
3
julia> enqueue!(first, foo, 0)
4-element Array{Int64,1}:
0
1
2
3
julia> dequeue!(first, foo)
0
julia> enqueue!(last, foo, 5)
4-element Array{Int64,1}:
1
2
3
5
julia> dequeue!(last, foo)
5
рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ:
push!(::typeof(first), a, item) = unshift!(a, item)
push!(::typeof(last), a, item) = push!(a, item)
pop!(::typeof(first), a) = shift!(a)
pop!(::typeof(last), a) = pop!(a)
рд╣рдо push!
рдФрд░ pop!
рдХреЛ first
рдпрд╛ last
рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдП рдмрд┐рдирд╛ рднреА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ push!(last, ...)
рдФрд░ pop!(last, ...)
ред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдПрдХ рдФрд░ рд╡рд┐рдЪрд╛рд░:
push/pop!(first, x, ...)
рдФрд░push/pop!(last, x, ...)
редрд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕
pop!(min, x)
рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдХрд░рддрд╛ рд╣реИред