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 就可以实现 ...
随机推荐
- Solr7.1---数据库导入并建立中文分词器
这里只是告诉你如何导入,生产环境不要这样部署你的solr服务. 首先修改solrConfig.xml文件 备份_default文件夹 修改solrconfig.xml 加入如下内容 官方示例:< ...
- 使用AOP实现缓存注解
为何重造轮子 半年前写了一个注解驱动的缓存,最近提交到了github.缓存大量的被使用在应用中的多个地方,简单的使用方式就是代码先查询缓存中是否存在数据,如果不存在或者缓存过期再查询数据库,并将查询的 ...
- javaWeb中URLEncoder.encode空格问题
近期开发一个在线坐席的功能.发现推送的消息中空格变成了+ .查询发现URLEncoder.encode的问题.曾经用的时候也没注意过,解决的方法网上是对URLEncoder.encode的之后的字符串 ...
- 我的GIS观
申明: 文章所述观点与不论什么组织或个人无关,仅代表我个人观点,如有不正确,还望批评指正. 概述: 从毕业到如今,在GIS这条路上也算是摸爬滚打4.5年了.说长也不长,说短也不短.在这4.5年的时间里 ...
- 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解
欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:腾讯云容器服务团队 源码为 k8s v1.6.1 版本,github 上对应的 commit id 为 b0b7a323cc5a4a ...
- redis的pipeline操作
1.简单描述 redis是一个CS模式的tcp的server,一个client发起了命令操作的请求,然后会阻塞等待服务端的处理和数据的返回.基本上一个命令请求就是2个报文,一去一回.如果多个命令,每次 ...
- ViewPager+Fragment 懒加载
转载于: 作者:尹star链接:http://www.jianshu.com/p/c5d29a0c3f4c來源:简书 ViewPager+Fragment的模式再常见不过了,以国民应用微信为例,假 ...
- Cannot open url. please check this url is correct
启动tomcat报错如下 任务管理器 kill 掉所有java进程,在配置中选中After launch选项 要是还是不行,那就无解,只能重启电脑.
- springboot 入门四-时间类型处理
springboot 自带了jackson来处理时间,但不支持jdk8 LocalDate.LocalDateTime的转换. 对于Calendar.Date二种日期,转换方式有二种: 一.统一app ...
- iOS 接收新消息通知调用系统声音 震动
添加系统框架: #import <AudioToolbox/AudioToolbox.h> 调用震动代码: AudioServicesPlaySystemSound(kSystemSoun ...