BTreeValueList: added Shift(),Pop()

master
Harald Wolff 2019-12-16 09:24:25 +01:00
parent cfe09dc39d
commit 86399306a9
1 changed files with 26 additions and 1 deletions

View File

@ -108,7 +108,32 @@ namespace ln.types.btree
bTree.Clear();
}
public IEnumerable<K> Keys => bTree.Keys;
public V Shift()
{
K k = bTree.First();
if (bTree.TryGet(k,out List<V> values))
{
V f = values[0];
Remove(k, f);
return f;
}
throw new Exception("Serious BUG");
}
public V Pop()
{
K k = bTree.Last();
if (bTree.TryGet(k, out List<V> values))
{
V f = values[values.Count-1];
Remove(k, f);
return f;
}
throw new Exception("Serious BUG");
}
public IEnumerable<K> Keys => bTree.Keys;
public IEnumerable<V> Values => bTree.Values.SelectMany(vl => vl);
}
}