4
我有一个SplObjectStorage实例,它存储要在容器中呈现的元素对象。我希望能够有效地添加和删除商店中任意位置的对象。重新组织SplObjectStorage实例的子项
例子:
<?php
$store = new SplObjectStorageWrapper;
$obj1 = new Obj;
$obj2 = new Obj;
$obj3 = new Obj;
$store->attach($obj1);
$store->attach($obj2);
$store->insertAtIndex($obj3, 1);
//Storage should now be organized as $obj1, $obj3, $obj2
我怎么会去实现insertAtIndex
方法?我是否使用LimitIterator
在某个位置后分离并重新连接儿童?事实证明,使用基于阵列的对象存储要比实例慢得多。
,我想实现的其他方法包括removeAtIndex(integer)
和indexOf(object)
是否需要SplObjectStorage的Set部分,例如:没有重复?如果不是,请尝试使用SplPriorityQueue类。它与'insertAt'完全不一样,但对于你的用例可能足够好了。 – Gordon 2012-01-04 18:31:10
戈登,不是真的。但是由于性能的巨大差异,我需要使用SplObjectStorage而不是基于阵列的解决方案。 – Kenaniah 2012-01-04 18:31:16