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 就可以实现 ...
随机推荐
- 两行 CSS 代码实现 PNG 任意颜色赋色技术
很久之前在张鑫旭大大的博客看到过一篇 PNG格式小图标的CSS任意颜色赋色技术,当时惊为天人,感慨还可以这样玩,私底下也曾多次想过有没有其他方法可以实现. 本方法与上面 ZXX 的方法及流传的使用 f ...
- Python爬虫(十一)_案例:使用正则表达式的爬虫
本章将结合先前所学的爬虫和正则表达式知识,做一个简单的爬虫案例,更多内容请参考:Python学习指南 现在拥有了正则表达式这把神兵利器,我们就可以进行对爬取到的全部网页源代码进行筛选了. 下面我们一起 ...
- 移动 云MAS 发短信 .net HTTP 请求
本人开发移动云MAS .net Http 请求 代码如下 using Newtonsoft.Json.Linq; using System; using System.Collections.Gen ...
- 改动hosts权限
在屏蔽网页.訪问一些特定局域网的时候,都可能须要改动Hosts文件. 只是在改动Hosts文件后.会遇到无法保存的情况,提示"您没有权限在此位置中保存文件,请与管理员联系以获取对应权限&qu ...
- [Sqoop]利用sqoop对mysql运行DML操作
业务背景 利用sqoop对mysql进行查询.加入.删除等操作. 业务实现 select操作: sqoop eval \ --connect jdbc:mysql://127.0.0.1:3306/m ...
- js通用方法检測浏览器是否已安装指定插件(IE与非IE通用)
/* * 检測是否已安装指定插件 * * pluginName 插件名称 */ function checkPlugins(pluginName) { var np = navigator.plugi ...
- Struts2中validate数据校验的两种常用方法
本文主要介绍Struts2中validate数据校验的两种方法及Struts2常用校验器. 1.Action中的validate()方法 Struts2提供了一个Validateable接口,这个接 ...
- ABP入门系列(21)——切换MySQL数据库
ABP入门系列目录--学习Abp框架之实操演练 源码路径:Github-LearningMpaAbp 1. 引言 Abp支持MySql已经不是什么新鲜事了,但按照官方文档:Entity Framewo ...
- APP之构架自己的webapi框架
当我们学习到一定程度的时候,我们会想要去深入了解代码底层的东西,也更想拥有一个属于自己的框架.本文可能成为编写一个webapi框架的开端.有研究MVC框架的朋友会发现,mvc框架的路由MvcRoute ...
- 33 款主宰 2017 iOS 开发的开源库
推荐一篇文章 改文章汇聚了现在主流的一些三方框架,很值得一看 https://mp.weixin.qq.com/s/ICodliohtzbmA-eLKRFT-Q