Click or drag to resize

FifoQueueT Class

Represents a first-in, first-out collection of objects.

Compared to the standard generic Queue, this queue allows access to queue elements throught the [P:Item(int)] property of the IList{T} interface. It implements the IList{T} interface, supporting in-queue modifications, i.e. methods like Remove and Insert.

The next element to be dequeued is the first element in the IList{T},

this[0]
. New elements are added in the end of the list.

Inheritance Hierarchy
SystemObject
  DHI.Mike1D.Generic.CollectionsFifoQueueT
    DHI.Mike1D.GenericQueueDateTimes
    DHI.Mike1D.ResultDataAccessTimeDataCircularValue
    DHI.Mike1D.ResultDataAccessTimeDataCircularVector

Namespace:  DHI.Mike1D.Generic.Collections
Assembly:  DHI.Mike1D.Generic (in DHI.Mike1D.Generic.dll) Version: 19.0.0.0 (11.1.1.1111)
Syntax
public class FifoQueue<T> : IList<T>, 
	ICollection<T>, IEnumerable<T>, IEnumerable, IReadOnlyList<T>, IReadOnlyCollection<T>

Type Parameters

T

[Missing <typeparam name="T"/> documentation for "T:DHI.Mike1D.Generic.Collections.FifoQueue`1"]

The FifoQueueT type exposes the following members.

Constructors
Properties
  NameDescription
Public propertyArray
An array representation of the current content of the queue.

Note that this will make a copy of the internal array

Public propertyCapacity
Gets or sets the total number of elements the internal data structure can hold without resizing.
Public propertyCount
Gets the number of elements contained in the FifoQueue{T}.
Public propertyItem
Gets/sets the element at the specified position in the FifoQueue{T}.
Protected propertyTail
Index in internal _q array of last element in the queue
Top
Methods
  NameDescription
Public methodAdd
Adds an object to the end of the FifoQueue{T}, same as Enqueue(T)
Public methodAddRange
Adds an object to the end of the FifoQueue{T}, same as Enqueue(T)
Public methodAddRotate
Adds an object to the end of the FifoQueue{T}, dequeuing the first item if queue is full (capacity is met).
Public methodClear
Removes all objects from the FifoQueue{T}.
Public methodContains
Public methodCopyTo
Public methodDequeue
Removes and returns the object at the beginning of the FifoQueue{T}.
Public methodEnqueue
Adds an object to the end of the FifoQueue{T}.
Public methodEquals
Determines whether the specified object is equal to the current object.
(Inherited from Object.)
Protected methodFinalize
Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.
(Inherited from Object.)
Public methodGetEnumerator
Returns an enumerator that iterates through the FifoQueue{T}.
Public methodGetHashCode
Serves as the default hash function.
(Inherited from Object.)
Public methodGetType
Gets the Type of the current instance.
(Inherited from Object.)
Protected methodIndex
Index in internal _q array _q of the element with index in queue, handling circular array wrapping.
Public methodIndexOf
Public methodInsert
Protected methodMemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)
Public methodPeek
Returns the object at the beginning of the FifoQueue{T} without removing it.
Public methodPushBack
Put the first element to the end of the queue
Public methodRemove
Public methodRemoveAt
Public methodToString
Returns a string that represents the current object.
(Inherited from Object.)
Top
Fields
  NameDescription
Protected field_count
Number of elements currently in the queue/circular array
Protected field_head
Index of first element in circular array _q
Protected field_q
Internal array of queue values, used as circular array.
Top
Extension Methods
  NameDescription
Public Extension MethodBinarySearchT(T)Overloaded.
Searches the entire sorted IListT for an element and returns the zero-based index of the element.

If the key is not found, a negative number is returned, which can be intepreted as the bitwise complement of the interval of indices that the key is in between, i.e.

list[interval-1] < key < list[interval]

(Defined by GenericExtensions.)
Public Extension MethodCode exampleBinarySearchT(FuncT, Int32)Overloaded.
Searches the entire sorted IListT for an element using the provided comparer and returns the zero-based index of the element.

This differs from the "ordinary" binary search in allowing a comparer delegate that defines whether an item is found (returning 0), whether the item in the list is before (<0) or after (>0) that knows how to compare a class with its key. Example, if the list contains classes of type T having an id number and the class is sorted on that id, then the keySelector returns the id number for that class.

Examples
If having a list of doubles, to find 4.5 in the list, use:
int index = list.BinarySearch(d => d.CompareTo(4.5))
(Defined by GenericExtensions.)
Public Extension MethodBinarySearchT(T, IComparerT)Overloaded.
Searches the entire sorted IListT for an element using the provided comparer and returns the zero-based index of the element.

If the key is not found, a negative number is returned, which can be intepreted as the bitwise complement of the interval of indices that the key is in between, i.e.

list[interval-1] < key < list[interval]

(Defined by GenericExtensions.)
Public Extension MethodBinarySearchT, TKey(FuncT, TKey, TKey)Overloaded.
Searches the entire sorted IListT for an element and returns the zero-based index of the element.

If the key is not found, a negative number is returned, which can be intepreted as the bitwise complement of the interval of indices that the key is in between, i.e.

list[interval-1] < key < list[interval]

This differs from the "ordinary" binary search in allowing a keySelectorcomparer that knows how to compare a class with its key. Example, if the list contains classes of type T having an id number and the class is sorted on that id, then the keySelector returns the id number for that class.

(Defined by GenericExtensions.)
Public Extension MethodBinarySearchT, TKey(FuncT, TKey, TKey, IComparerTKey)Overloaded.
Searches the entire sorted IListT for an element using the provided comparer and returns the zero-based index of the element.

If the key is not found, a negative number is returned, which can be intepreted as the bitwise complement of the interval of indices that the key is in between, i.e.

list[interval-1] < key < list[interval]

This differs from the "ordinary" binary search in allowing a keySelectorcomparer that knows how to compare a class with its key. Example, if the list contains classes of type T having an id number and the class is sorted on that id, then the keySelector returns the id number for that class.

(Defined by GenericExtensions.)
Public Extension MethodFindIndexT(PredicateT)Overloaded.
Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the first occurrence within the range of elements in the list.
(Defined by GenericExtensions.)
Public Extension MethodFindIndexT(Int32, PredicateT)Overloaded.
Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the first occurrence within the range of elements in the ListT that extends from the specified index to the last element.
(Defined by GenericExtensions.)
Public Extension MethodSortTOverloaded.
Sorts the elements in the entire List{T} using the default comparer.

A quick sort algorithm is used. Quick sort is a un-stable sort algorithm i.e. if two elements are equal their order may not be preserved.

If the provided IList is either an array or a list, the build in sorting method is used (also quick sort).

(Defined by GenericExtensions.)
Public Extension MethodSortT(IComparerT)Overloaded.
Sorts the elements in the entire List{T} using the provided comparer.

A quick sort algorithm is used. Quick sort is a un-stable sort algorithm i.e. if two elements are equal their order may not be preserved.

If the provided IList is either an array or a list, the build in sorting method is used (also quick sort).

(Defined by GenericExtensions.)
Public Extension MethodSortStableTOverloaded. (Defined by GenericExtensions.)
Public Extension MethodSortStableT(IComparerT)Overloaded.
Sorts the elements in the entire List{T} using the provided comparer.

A merge sort algorithm is used. merge sort is a stable sort algorithm i.e. if two elements are equal their order are preserved.

(Defined by GenericExtensions.)
Public Extension MethodSortStableT(ComparisonT)Overloaded.
Sorts the elements in the entire List{T} using the provided comparer.

A merge sort algorithm is used. merge sort is a stable sort algorithm i.e. if two elements are equal their order are preserved.

(Defined by GenericExtensions.)
Top
Remarks

This class implements a generic queue as a circular array. Objects stored in a FifoQueue{T} are inserted at one end and removed from the other. The operations Enqueue(T) and Dequeue are O(1) operations.

The capacity of a FifoQueue{T} is the number of elements the FifoQueue{T} can currently hold. As elements are added to a FifoQueue{T}, the capacity is automatically increased as required by reallocating the internal array.

FifoQueue{T} accepts null as a valid value for reference types and allows duplicate elements.

See Also