SList: Add length and opEquals

This commit is contained in:
2017-01-25 19:41:05 +01:00
parent 3e36ec0984
commit b2baba9237
5 changed files with 100 additions and 25 deletions

View File

@ -100,10 +100,8 @@ struct Queue(T)
*
* Params:
* x = New element.
*
* Returns: $(D_KEYWORD this).
*/
ref typeof(this) enqueue(ref T x)
void enqueue(ref T x)
{
auto temp = allocateEntry();
@ -111,12 +109,10 @@ struct Queue(T)
temp.content = x;
enqueueEntry(temp);
return this;
}
/// Ditto.
ref typeof(this) enqueue(T x)
void enqueue(T x)
{
auto temp = allocateEntry();
@ -124,8 +120,6 @@ struct Queue(T)
(*temp).next = null;
enqueueEntry(temp);
return this;
}
///
@ -134,7 +128,8 @@ struct Queue(T)
Queue!int q;
assert(q.empty);
q.enqueue(8).enqueue(9);
q.enqueue(8);
q.enqueue(9);
assert(q.dequeue() == 8);
assert(q.dequeue() == 9);
}
@ -183,7 +178,8 @@ struct Queue(T)
{
Queue!int q;
q.enqueue(8).enqueue(9);
q.enqueue(8);
q.enqueue(9);
assert(q.dequeue() == 8);
assert(q.dequeue() == 9);
}
@ -232,7 +228,9 @@ struct Queue(T)
Queue!int q;
size_t j;
q.enqueue(5).enqueue(4).enqueue(9);
q.enqueue(5);
q.enqueue(4);
q.enqueue(9);
foreach (i, e; q)
{
assert(i != 2 || e == 9);
@ -244,7 +242,9 @@ struct Queue(T)
assert(q.empty);
j = 0;
q.enqueue(5).enqueue(4).enqueue(9);
q.enqueue(5);
q.enqueue(4);
q.enqueue(9);
foreach (e; q)
{
assert(j != 2 || e == 9);
@ -270,7 +270,8 @@ unittest
q.enqueue(5);
assert(!q.empty);
q.enqueue(4).enqueue(9);
q.enqueue(4);
q.enqueue(9);
assert(q.dequeue() == 5);