PHP Deque功能
Deque是一个可以自动增长和缩小的连续缓冲区值序列。它是”双端队列”的常用缩写,可以在Ds\Queue内部使用。
可以使用两个指针来跟踪头部和尾部。这些指针可以在缓冲区的末尾环绕,从而避免移动其他值以腾出空间。这可以使移动和插入操作非常快速。
通过索引访问值可能需要在索引和缓冲区中对应位置之间进行转换:((head + position) % capacity)。
优点
- 支持数组语法(方括号)。
- 对于相同数量的值,使用的内存比数组少。
- 在大小降低到足够低时,自动释放已分配的内存。
- get(),set(),push(),pop(),shift()和unshift()都是O(1)。
缺点
- 容量必须是2的幂。
- insert()和remove()是O(n)。
语法
Ds\Deque implements Ds\Sequence {
/* Constants */
const int MIN_CAPACITY = 8 ;
/* Methods */
public void allocate( int capacity )
public void apply( callablecallback )
public int capacity( void )
public void clear( void )
public bool contains([ mixed ...values ] )
public Ds\Deque copy( void )
public Ds\Deque filter([ callablecallback ] )
public mixed find( mixed value )
public mixed first( void )
public mixed get( intindex )
public void insert( int index [, mixed...values ] )
public bool isEmpty( void )
public string join([ string glue ] )
public mixed last( void )
public Ds\Deque map( callablecallback )
public Ds\Deque merge( mixed values )
public mixed pop( void )
public void push([ mixed...values ] )
public mixed reduce( callable callback [, mixedinitial ] )
public mixed remove( int index )
public void reverse( void )
public Ds\Deque reversed( void )
public void rotate( introtations )
public void set( int index , mixedvalue )
public mixed shift( void )
public Ds\Deque slice( int index [, intlength ] )
public void sort([ callable comparator ] )
public Ds\Deque sorted([ callablecomparator ] )
public number sum( void )
public array toArray( void )
public void unshift([ mixed $values ] )
}
预定义常量
Ds\Deque::MIN_CAPACITY
排名 | 功能和说明 |
---|---|
1 | Ds\Deque::allocate() 函数 此函数可以为所需容量分配足够的内存。 |
2 | Ds\Deque::apply() 函数 此函数可以通过将回调函数应用于每个值来更新所有值。 |
3 | Ds\Deque::capacity() 函数 此函数可以返回当前容量。 |
4 | Ds\Deque::clear() 函数 此函数可以从双端队列中移除所有值。 |
5 | Ds\Deque::contains() 函数 此函数可以确定双端队列是否包含给定的值。 |
6 | Ds\Deque::__construct() 函数 此函数可以创建一个新的实例。 |
7 | Ds\Deque::copy() 函数 此函数可以返回一个双端队列的浅拷贝。 |
8 | Ds\Deque::count() 函数 此函数可以用于获取双端队列中元素的数量。 |
9 | Ds\Deque::filter() 函数 此函数可以通过使用可调用函数确定要包含哪些值来创建一个新的双端队列。 |
10 | Ds\Deque::find() 函数 此函数可以尝试找到一个值的索引。 |
11 | Ds\Deque::first() 函数 这个函数可以返回双端队列中的第一个值。 |
12 | Ds\Deque::get() 函数 这个函数可以返回给定索引位置的值。 |
13 | Ds\Deque::insert() 函数 这个函数可以将值插入到给定索引位置。 |
14 | Ds\Deque::isEmpty() 函数 这个函数可以返回双端队列是否为空。 |
15 | Ds\Deque::join() 函数 这个函数可以将所有的值连接成一个字符串。 |
16 | Ds\Deque::jsonSerialize() 函数 这个函数可以返回一个可以转换成 JSON 的表示形式。 |
17 | Ds\Deque::last() 函数 此函数可以返回最后一个值。 |
18 | Ds\Deque::map() 函数 此函数可以返回将回调应用于每个值的结果。 |
19 | Ds\Deque::merge() 函数 此函数可以返回将所有给定值添加到双端队列中的结果。 |
20 | Ds\Deque::pop() 函数 此函数可以移除并返回最后一个值。 |
21 | Ds\Deque::push() 函数 此函数可以将值添加到双端队列的末尾。 |
22 | Ds\Deque::reduce() 函数 这个函数可以使用回调函数将deque减少到单个值。 |
23 | Ds\Deque::remove()函数 这个函数可以通过索引删除并返回一个值。 |
24 | Ds\Deque::reverse()函数 这个函数可以原地反转deque。 |
25 | Ds\Deque::reversed()函数 这个函数可以返回一个反转的副本。 |
26 | Ds\Deque::rotate()函数 这个函数可以将deque按给定的旋转次数旋转。 |
27 | Ds\Deque::set()函数 这个函数可以更新给定索引处的值。 |
28 | Ds\Deque::shift() 函数 此函数可以移除并返回第一个值。 |
29 | Ds\Deque::slice() 函数 此函数可以返回给定范围的子双端队列。 |
30 | Ds\Deque::sort() 函数 此函数可以原地对双端队列进行排序。 |
31 | Ds\Deque::sorted() 函数 此函数可以返回一个已排序的副本。 |
32 | Ds\Deque::sum() 函数 此函数可以返回双端队列中所有值的总和。 |
33 | Ds\Deque::toArray() 函数 此函数可以将双端队列转换为数组。 |
34 | Ds\Deque::unshift() 功能 此功能可以将值添加到deque的前面。 |