Standard PHP Library(SPL)中的数据结构
SPL提供了一组标准数据结构。
- SplDoublyLinkedList Class:双向链表(DLL)是在两个方向上相互链接的节点列表。当底层结构是dll时,迭代器的操作、对两端的访问、节点的添加或删除均是O(1),为堆栈和队列提供了良好的实现
SplDoublyLinkedList::add — Add/insert a new value at the specified index SplDoublyLinkedList::bottom — Peeks at the node from the beginning of the doubly linked list SplDoublyLinkedList::__construct — Constructs a new doubly linked list SplDoublyLinkedList::count — Counts the number of elements in the doubly linked list. SplDoublyLinkedList::current — Return current array entry SplDoublyLinkedList::getIteratorMode — Returns the mode of iteration SplDoublyLinkedList::isEmpty — Checks whether the doubly linked list is empty. SplDoublyLinkedList::key — Return current node index SplDoublyLinkedList::next — Move to next entry SplDoublyLinkedList::offsetExists — Returns whether the requested $index exists SplDoublyLinkedList::offsetGet — Returns the value at the specified $index SplDoublyLinkedList::offsetSet — Sets the value at the specified $index to $newval SplDoublyLinkedList::offsetUnset — Unsets the value at the specified $index SplDoublyLinkedList::pop — Pops a node from the end of the doubly linked list SplDoublyLinkedList::prev — Move to previous entry SplDoublyLinkedList::push — Pushes an element at the end of the doubly linked list SplDoublyLinkedList::rewind — Rewind iterator back to the start SplDoublyLinkedList::serialize — Serializes the storage SplDoublyLinkedList::setIteratorMode — Sets the mode of iteration SplDoublyLinkedList::shift — Shifts a node from the beginning of the doubly linked list SplDoublyLinkedList::top — Peeks at the node from the end of the doubly linked list SplDoublyLinkedList::unserialize — Unserializes the storage SplDoublyLinkedList::unshift — Prepends the doubly linked list with an element SplDoublyLinkedList::valid — Check whether the doubly linked list contains more nodes
- SplStack Class:该类继承自SplDoublyLinkedList,通过使用一个双向链表来提供栈的主要功能
SplStack::__construct — Constructs a new stack implemented using a doubly linked list SplStack::setIteratorMode — Sets the mode of iteration
- SplQueue Class:该类继承自SplDoublyLinkedList,通过使用一个双向链表来提供队列的主要功能
SplQueue::__construct — Constructs a new queue implemented using a doubly linked list SplQueue::dequeue — Dequeues a node from the queue SplQueue::enqueue — Adds an element to the queue. SplQueue::setIteratorMode — Sets the mode of iteration
- SplHeap:该abstract类提供了堆的主要功能。堆是满足堆属性的树型结构:每个节点都大于或等于其子节点
SplHeap::compare — Compare elements in order to place them correctly in the heap while sifting up. SplHeap::__construct — Constructs a new empty heap SplHeap::count — Counts the number of elements in the heap. SplHeap::current — Return current node pointed by the iterator SplHeap::extract — Extracts a node from top of the heap and sift up. SplHeap::insert — Inserts an element in the heap by sifting it up. SplHeap::isEmpty — Checks whether the heap is empty. SplHeap::key — Return current node index SplHeap::next — Move to the next node SplHeap::recoverFromCorruption — Recover from the corrupted state and allow further actions on the heap. SplHeap::rewind — Rewind iterator back to the start (no-op) SplHeap::top — Peeks at the node from the top of the heap SplHeap::valid — Check whether the heap contains more nodes
- SplMaxHeap Class:该类继承自SplHeap,提供了大顶堆的主要功能
SplMaxHeap::compare — Compare elements in order to place them correctly in the heap while sifting up.
- SplMinHeap class:该类继承自SplHeap,提供了小顶堆的主要功能
SplMinHeap::compare — Compare elements in order to place them correctly in the heap while sifting up.
- SplPriorityQueue Class:该类提供优先队列的功能,以大顶堆来实现的
SplPriorityQueue::compare — Compare priorities in order to place elements correctly in the heap while sifting up. SplPriorityQueue::__construct — Constructs a new empty queue SplPriorityQueue::count — Counts the number of elements in the queue. SplPriorityQueue::current — Return current node pointed by the iterator SplPriorityQueue::extract — Extracts a node from top of the heap and shift up. SplPriorityQueue::insert — Inserts an element in the queue by sifting it up. SplPriorityQueue::isEmpty — Checks whether the queue is empty. SplPriorityQueue::key — Return current node index SplPriorityQueue::next — Move to the next node SplPriorityQueue::recoverFromCorruption — Recover from the corrupted state and allow further actions on the queue. SplPriorityQueue::rewind — Rewind iterator back to the start (no-op) SplPriorityQueue::setExtractFlags — Sets the mode of extraction SplPriorityQueue::top — Peeks at the node from the top of the queue SplPriorityQueue::valid — Check whether the queue contains more nodes
- SplFixedArray Class:这里的array是以连续方式存储数据的结构,可以通过索引访问,与PHP数组是有序哈希表实现不同;另外,SplFixedArray 拥有固定长度、整数indexes,速度更快
SplFixedArray::__construct — Constructs a new fixed array SplFixedArray::count — Returns the size of the array SplFixedArray::current — Return current array entry SplFixedArray::fromArray — Import a PHP array in a SplFixedArray instance SplFixedArray::getSize — Gets the size of the array SplFixedArray::key — Return current array index SplFixedArray::next — Move to next entry SplFixedArray::offsetExists — Returns whether the requested index exists SplFixedArray::offsetGet — Returns the value at the specified index SplFixedArray::offsetSet — Sets a new value at a specified index SplFixedArray::offsetUnset — Unsets the value at the specified $index SplFixedArray::rewind — Rewind iterator back to the start SplFixedArray::setSize — Change the size of an array SplFixedArray::toArray — Returns a PHP array from the fixed array SplFixedArray::valid — Check whether the array contains more elements SplFixedArray::__wakeup — Reinitialises the array after being unserialised
- SplObjectStorage Class:该类提供了一个从对象到数据(或忽略数据)的map,是一种对象集合
SplObjectStorage::addAll — Adds all objects from another storage SplObjectStorage::attach — Adds an object in the storage SplObjectStorage::contains — Checks if the storage contains a specific object SplObjectStorage::count — Returns the number of objects in the storage SplObjectStorage::current — Returns the current storage entry SplObjectStorage::detach — Removes an object from the storage SplObjectStorage::getHash — Calculate a unique identifier for the contained objects SplObjectStorage::getInfo — Returns the data associated with the current iterator entry SplObjectStorage::key — Returns the index at which the iterator currently is SplObjectStorage::next — Move to the next entry SplObjectStorage::offsetExists — Checks whether an object exists in the storage SplObjectStorage::offsetGet — Returns the data associated with an object SplObjectStorage::offsetSet — Associates data to an object in the storage SplObjectStorage::offsetUnset — Removes an object from the storage SplObjectStorage::removeAll — Removes objects contained in another storage from the current storage SplObjectStorage::removeAllExcept — Removes all objects except for those contained in another storage from the current storage SplObjectStorage::rewind — Rewind the iterator to the first storage element SplObjectStorage::serialize — Serializes the storage SplObjectStorage::setInfo — Sets the data associated with the current iterator entry SplObjectStorage::unserialize — Unserializes a storage from its string representation SplObjectStorage::valid — Returns if the current iterator entry is valid
Standard PHP Library(SPL)中的数据结构的更多相关文章
- php spl标准库简介(SPL是Standard PHP Library(PHP标准库)(直接看代码实例,特别方便)
php spl标准库简介(SPL是Standard PHP Library(PHP标准库)(直接看代码实例,特别方便) 一.总结 直接看代码实例,特别方便易懂 thinkphp控制器利眠宁不支持(说明 ...
- [c++] STL = Standard Template Library
How many people give up, because of YOU. Continue... 先实践,最后需要总结. 1. 数据流中的数据按照一定的格式<T>提取 ------ ...
- C++ Standard Template Library STL(undone)
目录 . C++标准模版库(Standard Template Library STL) . C++ STL容器 . C++ STL 顺序性容器 . C++ STL 关联式容器 . C++ STL 容 ...
- 自定义标签 与 JSTL(JSP Standard Tag Library)
1.自定义标签 [理解] [1]简介 > 在JSP2.0以后,在jsp页面中不建议使用脚本片段<% %>和JSP表达式<%= %> ...
- JSTL的全称:JSP Standard Tag Library, jsp 标准标签库
JSTL的全称:JSP Standard Tag Library, jsp 标准标签库 JSTL的作用 提供给Java web开发人员一个标准通过的标签函数库和EL来取代传统直接在页面上嵌入j ...
- JSTL(JSP Standard Tag Library ,JSP标准标签库)
JSTL标签之核心标签 JSTL(JSP Standard Tag Library ,JSP标准标签库)是一个实现 Web应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断.数据管 ...
- JSTL 标准标签库 (JavaServer Pages Standard Tag library, JSTL)
JSP标准标签库(JavaServer Pages Standard Tag Library,JSTL)是一个定制标签库的集合,用来解决 像遍历Map或集合.条件测试.XML处理,甚至数据 库访问和数 ...
- [C#] .NET Core/Standard 1.X 项目中如何使用XmlIgnoreAttribute等标准范围外的内容,兼谈如何解决“violation of security transparency rules failed”(违反安全透明规则失败)异常
作者: zyl910 一.缘由 XML序列化是一个很常用的功能,但对于.NET Core/Standard,其直到2.0版才内置支持XML序列化.具体来说, .NET Core 2.0 或 .NET ...
- 为什么要使用 SPL中的 SplQueue实现队列
今天看php的SPL标准库部分里面涉及到数据结构其中有 SplQueue 来实现队列效果,但是我刚接触php的时候学习到的是 使用array的 array_push 和 array_pop 就可以实现 ...
随机推荐
- PTA题---求两个有序序列中位数所体现的思想。
---恢复内容开始--- 近日,在做PTA题目时,遇到了一个这样的题,困扰了很久.题目如下:已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数.有序序列A0,A1, ...
- 教你如何用 lib-flexible 实现移动端H5页面适配
前话 好久没写教程了(可能会误导新手的菜鸟教程( ̄▽ ̄)"). 这是我的github,欢迎前端大大们和我一起学习交流 https://github.com/pwcong 最近入职公司做前端实 ...
- CentOS7脱机安装SQL Server 2017
SQL Server on Linux也发布一段时间了,官方上支持Red Hat, SUSE, Ubuntu.手上没有以上Linux版本,选用了与Red Hat最接近的CentOS7.4来进行安装和测 ...
- webrtc视频数据render流程
- Cocos2d-X 精灵、动作效果
命名空间宏: USING_NS_CC; 感觉事实上挺鸡肋的. NS_CC_BEGIN. == using namespace cocos2d{ NS_CC_END ; } 推断一个精灵被点击: 1.层 ...
- oracle 10g下范围分区扫描的几种方式
oracle 10g下有几种扫描方式,注意最后一种扫描方式,当对分区的列进行计算时,会不走分区.这跟对索引列进行计算会导致无法用索引一样. --扫描单个分区 PARTITION RANGE SING ...
- Android 当打开“开发人员模式”中的“不保留活动”后,程序应当怎么保持正常执行
Android 当打开"开发人员模式"中的"不保留活动"后,程序应当怎么保持正常执行咧. .? 在这几天,我一直在纠结这个问题.从发现,程序出现这个问题,是由于 ...
- poj - 1185 炮兵阵地 状压DP 解题报告
炮兵阵地 Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 21553 Accepted: 8363 Description ...
- class的二般用法
一般来说,class就是给一堆元素添加样式的,但是还有二般的用法,就是用来作为一个开关,来切换他的子孙元素的样式.举个例子: <ul> <li><span>1< ...
- 机器学习 - pycharm, tensorflow集成篇
继续上篇的pyspark集成后,我们再来看看当今热的不得了的tensorflow是如何继承进pycharm环境的 参考: http://blog.csdn.net/include1224/articl ...