Enhanced C#
Loyc library documentation
 All Classes Namespaces Functions Variables Enumerations Enumerator Properties Events Pages
Properties | Public Member Functions | Protected fields | List of all members
Loyc.Collections.DList< T > Class Template Reference

A compact auto-enlarging list, similar to List{T}, that efficiently supports supports insertions at the beginning or end of the list. More...


Source file:
Inheritance diagram for Loyc.Collections.DList< T >:
Loyc.Collections.IListEx< T > Loyc.Collections.IDeque< T > Loyc.Collections.IListRangeMethods< in T > Loyc.ICloneable< out T > Loyc.Collections.IAddRange< in T > Loyc.Collections.ICount Loyc.Collections.IHasMLast< T > Loyc.Collections.IHasMFirst< T > Loyc.Collections.IListRangeMethods< in T > Loyc.Collections.IArray< T > Loyc.Collections.ICollectionEx< T > Loyc.Collections.IListAndListSource< T >

Remarks

A compact auto-enlarging list, similar to List{T}, that efficiently supports supports insertions at the beginning or end of the list.

An article about this class is available.

See also
InternalDList{T}, DList

Properties

int Capacity [get, set]
 
this[int index] [get, set]
 
this[int index, T defaultValue] [get]
 
int Count [get]
 
bool IsReadOnly [get]
 
First [get, set]
 
Last [get, set]
 
bool IsEmpty [get]
 
- Properties inherited from Loyc.Collections.IListEx< T >
new int Count [get]
 
- Properties inherited from Loyc.Collections.ISource< out T >
new int Count [get]
 Gets the number of items in the collection. More...
 
- Properties inherited from Loyc.Collections.ICount
int Count [get]
 Gets the number of items in the collection. More...
 
- Properties inherited from Loyc.Collections.IIsEmpty
bool IsEmpty [get]
 
- Properties inherited from Loyc.Collections.IIndexed< in K, out V >
this[K key] [get]
 Gets the value associated with the specified key. More...
 
- Properties inherited from Loyc.Collections.IArray< T >
new T this[int index] [get, set]
 Gets or sets an element of the array-like collection. More...
 
- Properties inherited from Loyc.Collections.IArraySink< in T >
this[int index] [set]
 
- Properties inherited from Loyc.Collections.IHasMFirst< T >
new T First [get, set]
 
- Properties inherited from Loyc.Collections.IHasFirst< out T >
First [get]
 Gets the first item in the deque. More...
 
- Properties inherited from Loyc.Collections.IHasMLast< T >
new T Last [get, set]
 
- Properties inherited from Loyc.Collections.IHasLast< out T >
Last [get]
 Gets the first item in the collection. More...
 

Public Member Functions

 DList (int capacity)
 
 DList (IReadOnlyCollection< T > items)
 
 DList (ICollection< T > items)
 
 DList (ICollectionAndReadOnly< T > items)
 
 DList (IEnumerable< T > items)
 
 DList (T[] items)
 
int IndexOf (T item)
 
void PushLast (ICollection< T > items)
 
void PushLast (IEnumerable< T > items)
 
void PushLast (IReadOnlyCollection< T > items)
 
void PushLast (ICollectionAndReadOnly< T > items)
 
void PushLast (T item)
 
void PushFirst (T item)
 
void PopLast (int amount)
 
void PopFirst (int amount)
 
void Insert (int index, T item)
 
void InsertRange (int index, ICollection< T > items)
 
void InsertRange (int index, IReadOnlyCollection< T > items)
 
void InsertRange (int index, ICollectionAndReadOnly< T > items)
 
void InsertRange (int index, IEnumerable< T > e)
 
void AddRange (ICollectionAndReadOnly< T > c)
 
void AddRange (ICollection< T > c)
 
void AddRange (IReadOnlyCollection< T > s)
 
void AddRange (IEnumerable< T > e)
 
void RemoveAt (int index)
 
void RemoveRange (int index, int amount)
 
bool TrySet (int index, T value)
 
TryGet (int index, out bool fail)
 
void Add (T item)
 An alias for PushLast(). More...
 
void Clear ()
 
bool Contains (T item)
 Returns true if and only if the collection contains the specified item. More...
 
void CopyTo (T[] array, int arrayIndex)
 Copies the elements of the collection to an Array, starting at a particular array index. More...
 
bool Remove (T item)
 
InternalDList< T >.Enumerator GetEnumerator ()
 
Maybe< T > TryPopFirst ()
 
Maybe< T > TryPeekFirst ()
 
Maybe< T > TryPopLast ()
 
Maybe< T > TryPeekLast ()
 
int BinarySearch (T k, Comparer< T > comp)
 
int BinarySearch< K > (K k, Func< T, K, int > comp)
 
void Resize (int newSize)
 
DList< T > Clone ()
 
void CopyTo (int sourceIndex, T[] destination, int destinationIndex, int subcount)
 
DList< T > CopySection (int start, int subcount)
 
void Sort (Comparison< T > comp)
 
void Sort (int index, int count, Comparison< T > comp)
 
ListSlice< T > Slice (int start, int count)
 Returns a sub-range of this list. More...
 
Memory< T > AsContiguousMemory ()
 Rearranges the collection if necessary so that all elements are in a single contiguous block of memory, then returns that block. More...
 
- Public Member Functions inherited from Loyc.Collections.ITryGet< in K, out V >
TryGet (K key, out bool fail)
 Gets the item for the specified key or index, and does not throw an exception on failure. More...
 

Protected fields

InternalDList< T > _dlist = InternalDList<T>.Empty
 

Member Function Documentation

void Loyc.Collections.DList< T >.Add ( item)
inline

An alias for PushLast().

Implements Loyc.Collections.IAdd< in T >.

Memory<T> Loyc.Collections.DList< T >.AsContiguousMemory ( )

Rearranges the collection if necessary so that all elements are in a single contiguous block of memory, then returns that block.

Caution: the memory block is shared with the DList. If you add or remove items in the DList, it may or may not allocate a new memory block that will be independent of the memory block.

bool Loyc.Collections.DList< T >.Contains ( item)
inline

Returns true if and only if the collection contains the specified item.

Parameters
itemData/object whose presence you want to check for. The collection decides how to test for equality, but it's most common to use EqualityComparer{T}.Default.

Implements Loyc.Collections.IContains< in T >.

void Loyc.Collections.DList< T >.CopyTo ( T[]  array,
int  arrayIndex 
)
inline

Copies the elements of the collection to an Array, starting at a particular array index.

It's usually more convenient to call the ToArray() extension method, which calls this method for you.

This method exists for performance reasons (the collection itself can often copy data out faster than an enumerator can).

Exceptions
ArgumentNullExceptionarray is null.
ArgumentOutOfRangeExceptionarrayIndex is negative.
ArgumentExceptionThe number of elements in the source collection is greater than the available space from arrayIndex to the end of the destination array.

Implements Loyc.Collections.ICollectionSource< T >.

ListSlice<T> Loyc.Collections.DList< T >.Slice ( int  start,
int  count 
)
inline

Returns a sub-range of this list.

Parameters
startThe new range will start at this index in the current list (this location will be index [0] in the new range).
countThe desired number of elements in the new range, or int.MaxValue to get all elements until the end of the list.
Returns
Returns a sub-range of this range.
Exceptions
ArgumentExceptionThe start index was below zero.

The (start, count) range is allowed to be invalid, as long as start is zero or above.

  • If count is below zero, or if start is above the original Count, the Count of the new slice is set to zero.
  • if (start + count) is above the original Count, the Count of the new slice is reduced to this.Count - start. Implementation note: do not compute (start + count) because it may overflow. Instead, test whether (count > this.Count - start).

Most collections should use the following implementation:

IListSource<T> IListSource<T>.Slice(int start, int count) { return Slice(start, count); }
public Slice_<T> Slice(int start, int count) { return new Slice_<T>(this, start, count); }

Implements Loyc.Collections.IListSource< out T >.