carloswph/data-struct

提供在PHP中轻松构建高级数据结构的函数。

v1.0.0 2021-06-04 19:06 UTC

This package is auto-updated.

Last update: 2024-09-05 02:14:53 UTC


README

该包依赖于PHP-DS扩展,以提供一种处理高级数据结构(如向量、栈或集合)的功能方式。根据扩展提供的信息,一些类提供了一种面向对象的方式来创建、管理和处理这些结构,尽管迄今为止还没有提供创建这些结构的函数。

想法是给开发者提供一种创建新结构的方式,就像他使用 array(...) 一样,或者类似于C++或Java对这些数据类型的方法。

如何工作

此包允许您以与普通数组相同的方式创建栈或向量

$vector = vector(1, 10, 34, 1, 11, 20);
$stack = stack(2, 4, 78, 2, 1, 445);
$set = set(1, 2, 3, 4, 5);

var_dump($vector);
var_dump($stack);
var_dump($set);

/*

object(Ds\Vector)#3 (6) {
  [0]=>
  int(1)
  [1]=>
  int(10)
  [2]=>
  int(34)
  [3]=>
  int(1)
  [4]=>
  int(11)
  [5]=>
  int(20)
}
object(Ds\Stack)#2 (6) {
  [0]=>
  int(445)
  [1]=>
  int(1)
  [2]=>
  int(2)
  [3]=>
  int(78)
  [4]=>
  int(4)
  [5]=>
  int(2)
}
object(Ds\Set)#4 (5) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(4)
  [4]=>
  int(5)
}

*/

我可以使用哪些函数?

PHP-DS覆盖的所有数据结构都有一个等效函数,该函数接受任意数量的元素,就像数组一样。然而,与PHP中的数组相反,这些函数仅允许设置值(稍后,您可以使用由每个函数实例化的对象来访问相应类的方法)。所以,这包括

  • stack(...elements)
  • vector(...elements)
  • set(...elements)
  • queue(...elements)
  • deque(...elements)
  • map(...elements)

唯一的例外是 pqueue() 函数。这个特定的数据结构将每个值与一个优先级级别相关联。因此,当使用此函数时,元素的数目必须是始终为偶数 - 其中所有奇数将对应于先前值的优先级。

示例:pqueue(3, 10, 1, 5, 2, 25);

在这种情况下,要添加到您的 PriorityQueue 对象中的值将是 (2, 3, 1) - 按此顺序。这是因为,根据提供的元素,数字“2”具有最高的优先级,然后是“3”,最后是“1”,其优先级最低为5。