PHP扩展中的数据结构
1。运行命令的PECL安装DS
2。添加的扩展= ds.so
三.重新启动PHP或重载配置
采集接口:包含所有数据结构的一般作用在这个图书馆的基本接口,它保证所有的结构都是横的,可数的,可转换。
DS 收集实现通行,可数的,jsonserializable {
方法
抽象公共空间清空(无效)
抽象公共集合拷贝(空)
摘要公共布尔虚空(void)
摘要公共数组toArray(void)
}
哈希的接口:它允许对象作为键。
{ DS 哈希
方法
摘要公共bool值等于(对象obj)
抽象混合散列(空)
}
序列接口:一个序列相当于一维数组的数字键,除几个特性外:
值总是索引为{ 0, 1, 2,……大小- 1 }。
只允许在索引范围{ 0中访问索引值—
使用案例:
无论您在何处使用数组作为列表(不关心)。
一个更有效的替代spldoublylinkedlist和splfixedarray。
向量类:向量是自动增长和收缩的连续缓冲区中的一系列值,是最有效的序列结构,其值直接映射到缓冲区的索引中,生长因子不受特定的倍数或索引约束,具有以下优点和缺点:
支持数组语法(方括号)。
使用相同数组数的数组的总体内存较少
当内存大小足够低时自动释放分配的内存。
容量不一定是2的功率。
获取()、设置()、推()、POP()都是O(1)。
但移()(),(),()位置插入和删除()都是O(n)。
向量::分配-为所需的容量分配足够的内存。
应用程序:通过向每个应用回调函数来更新所有的值。
向量::容量-返回当前容量。
向量::清除所有值。
DS 向量::__construct -创建一个新的实例。
向量::包含-确定vector是否包含给定值。
向量::复制-返回一个向量的浅拷贝。
向量::计数-返回集合中的值的数量。
向量::过滤器-使用可调用的方法创建一个新的向量来确定哪个
向量::查找-查找值索引的尝试。
向量::首先返回向量中的第一个值。
向量::获取-返回给定索引的值。
在给定的索引中插入值。
DS 向量::空返回向量是否为空
向量::连接——将所有值作为字符串连接在一起。
DS 向量::jsonserialize -返回一个表示可以转换为JSON。
向量::最后一个——返回最后一个值。
向量::映射-返回对每个值应用回调的结果。
向量::合并-返回将所有给定值添加到
向量::弹出-删除并返回最后一个值。
DS向量::推-将值添加到矢量的结尾。
向量::减少-使用回调将向量减为单个值。
向量::移除-通过索引移除和返回一个值。
向量:反向颠倒位置的向量。
向量::反向返回一个反向拷贝。
向量::通过给定的旋转次数旋转向量。
向量::在给定索引处更新一个值。
变量:删除并返回第一个值。
向量::返回一个给定范围的子向量。
向量::排序。
向量::排序-返回一个已排序的副本。
向量::返回-返回向量中所有值的和。
DS 向量:向量:toArray转换到一个数组。
DS 向量::位置-增加值向量的前。
deque类:双端队列的缩写,也用于DS 队列,两指针头部和尾部。指针可以环绕端的缓冲区,缓冲区,其中,具有以下优点和缺点:
支持数组语法(方括号)。
使用相同数组数的数组的总体内存较少
当内存大小足够低时自动释放分配的内存。
得到(),设置(),推(),(),()流行的转变,和位置()都是O(1)。
但能力必须是一个权力2.insert()和删除()是O(N)。
map类:一组连续的键值对,几乎与数组相同。键可以是任意类型,但必须是唯一的。如果将相同的键添加到map中,该值将被替换:
键和值可以是任何类型,包括对象。
支持数组语法(方括号)。
插入顺序保持不变。
性能和内存效率非常类似于数组。
当内存大小足够低时自动释放分配的内存。
当对象用作键时不能转换为数组。
一对类:DS使用map对值进行配对。
DS 对实现{ jsonserializable
方法
公共__construct($关键{ {混合混合,美元的价值)
}
集合类:一个唯一的值序列。这个实现使用与该值相同的哈希表,其值如下所示,具有以下优点和缺点:
值可以是任何类型,包括对象。
支持数组语法(方括号)。
插入顺序保持不变。
当内存大小足够低时自动释放分配的内存。
添加()、删除()和包含()都是O(1)。
但不支持推送(),流行(),插入()、移(),或(),()得到的位置是O(是),推,插入,插入,
堆栈类:后进先出集合,只允许在结构顶部进行访问和迭代。
DS堆栈实现了
方法
公共空分配(int容量)
公共INT容量(空)
公共空白清除(无效)
公共堆栈复制(空)
public bool是空的(空)
公共混合窥视(无效)
公共混合流行音乐(无效)
公共虚推({混合$)…值})
公共数组toArray(void)
}
队列类:第一个,第一个集合,只允许访问和迭代在结构的前端。
DS
常量
const int min_capacity = 8;
方法
公共空分配(int容量)
公共INT容量(空)
公共空白清除(无效)
公共队列复制(空)
public bool是空的(空)
公共混合窥视(无效)
公共混合流行音乐(无效)
公共虚推({混合$)…值})
公共数组toArray(void)
}
优先级:优先级队列的队列是非常相似的,但价值推到指定的优先级队列。最高优先级的值总是位于队列前面,和先入先出的顺序和优先级的元素被保留。递归一个PriorityQueue是破坏性的,相当于一个连续的弹出操作直到队列为空。用最大堆的实现。
DS PriorityQueue实现{ DS 收藏
常量
const int min_capacity = 8;
方法
公共空分配(int容量)
公共INT容量(空)
公共空白清除(无效)
公共DS PriorityQueue拷贝(void)
public bool是空的(空)
公共混合窥视(无效)
公共混合流行音乐(无效)
公共虚推(混合$值,int优先级)
公共数组toArray(void)
}
以上是在PHP中的普遍的数据结构:DS扩展萧边共享你的全部内容。我希望能给你一个参考,希望你能支持它。