keyvanakbary / medusa
不可变和持久集合
dev-master
2016-05-11 08:26 UTC
Requires
- php: >=5.5.0
Requires (Dev)
- phpunit/phpunit: ~4.0
This package is not auto-updated.
Last update: 2024-09-14 16:13:34 UTC
README
不可变 和 持久 集合,用于 PHP。
如果我们有不可变的数据结构,生活将变得简单得多。代码将更容易理解,易于测试,且无副作用。仅是不可变还不够,这些数据结构还必须高效。通过使它们持久,集合可以重复使用内部结构以最小化表示集合实例变体所需的操作数量。
安装
要安装此库,请运行以下命令并获取最新版本
composer require keyvanakbary/medusa
用法
持久栈
$s = Medusa\Stack\PersistentStack::createEmpty(); $s1 = $s->push(1); $s2 = $s1->pop(); echo $s1->peek();//1 echo $s2->peek();//Runtime exception
复杂度
持久队列
$q = Medusa\Queue\PersistentQueue::createEmpty(); $q1 = $q->enqueue(1); $q2 = $q1->dequeue(); echo $q1->peek();//1 echo $q2->peek();//Runtime exception
复杂度
持久 AVL 树
$t = Medusa\Tree\PersistentAvlTree::createEmpty(); $t1 = $t->add(1, 'one'); $t2 = $t1->remove(1); echo $t1->search(1)->value();//one echo $t2->lookup(1);//Runtime exception
复杂度
持久红黑树
$t = Medusa\Tree\PersistentRedBlackTree::createEmpty(); $t1 = $t->add(1, 'one'); $t2 = $t1->remove(1); echo $t1->search(1)->value();//one echo $t2->lookup(1);//Runtime exception