class Deque
A double-ended queue implementation optimized for memory profiling. Stores items in segments to reduce memory reallocation overhead.
Definitions
def initialize
Initialize a new empty deque.
Implementation
def initialize
@segments = []
@last = nil
end
def freeze
Freeze this deque and all its segments.
Signature
-
returns
Deque Self.
Implementation
def freeze
return self if frozen?
@segments.each(&:freeze)
@last = nil
super
end
def concat(segment)
Concatenate an array segment to this deque.
Signature
-
parameter
segmentArray The segment to append.
-
returns
Deque Self.
Implementation
def concat(segment)
@segments << segment
@last = nil
return self
end
def <<(item)
Append an item to this deque.
Signature
-
parameter
itemObject The item to append.
-
returns
Deque Self.
Implementation
def << item
unless @last
@last = []
@segments << @last
end
@last << item
return self
end
def each(&block)
Iterate over all items in the deque.
Signature
-
parameter
blockBlock The block to yield each item to.
Implementation
def each(&block)
@segments.each do |segment|
segment.each(&block)
end
end
def size
Get the total number of items in the deque.
Signature
-
returns
Integer The total number of items across all segments.
Implementation
def size
@segments.sum(&:size)
end