|
Enhanced C#
Language of your choice: library documentation
|
A compact auto-enlarging list that efficiently supports supports insertions at the beginning or end of the list. More...
A compact auto-enlarging list that efficiently supports supports insertions at the beginning or end of the list.
An article about this class is available.
Properties | |
| int | Capacity [get, set] |
| T | this[int index] [get, set] |
| T | this[int index, T defaultValue] [get] |
| int | Count [get] |
| bool | IsReadOnly [get] |
| T | First [get, set] |
| T | Last [get, set] |
| bool | IsEmpty [get] |
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.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.ISinkArray< T > | |
| T | this[int index] [set] |
Properties inherited from Loyc.Collections.IDeque< T > | |
| T | First [get, set] |
| Gets the first item in the deque. More... | |
| T | Last [get, set] |
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) |
| int | RemoveAll (Predicate< T > condition) |
| Removes the all the elements that match the conditions defined by the specified predicate. More... | |
| bool | TrySet (int index, T value) |
| T | TryGet (int index, out bool fail) |
| Gets the item at the specified index, and does not throw an exception on failure. More... | |
| void | Add (T item) |
| An alias for PushLast(). More... | |
| void | Clear () |
| bool | Contains (T item) |
| void | CopyTo (T[] array, int arrayIndex) |
| bool | Remove (T item) |
| IEnumerator< T > | 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... | |
Protected fields | |
| InternalDList< T > | _dlist = InternalDList<T>.Empty |
|
inline |
An alias for PushLast().
Implements Loyc.Collections.IAdd< in T >.
|
inline |
Removes the all the elements that match the conditions defined by the specified predicate.
| match | A delegate that defines the conditions of the elements to remove |
Implements Loyc.Collections.ICollectionEx< T >.
|
inline |
Returns a sub-range of this list.
| start | The new range will start at this index in the current list (this location will be index [0] in the new range). |
| count | The desired number of elements in the new range, or int.MaxValue to get all elements until the end of the list. |
| ArgumentException | The start index was below zero. |
The (start, count) range is allowed to be invalid, as long as start is zero or above.
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:
IRange<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 >.
|
inline |
Gets the item at the specified index, and does not throw an exception on failure.
| index | An index in the range 0 to Count-1. |
| fail | A flag that is set on failure. |
In my original design, the caller could provide a value to return on failure, but this would not allow T to be marked as "out" in C# 4. For the same reason, we cannot have a ref/out T parameter. Instead, the following extension methods are provided:
Implements Loyc.Collections.IListSource< out T >.
1.8.7