# Structures de données

## Sommaire

- SplDoublyLinkedList
- SplStack
- SplQueue
- SplHeap
- SplMaxHeap
- SplMinHeap
- SplPriorityQueue
- SplFixedArray
- ArrayObject
- SplObjectStorage

SPL fournit un jeu de structures de données standard. Elles sont regroupées ici par implémentation, ce qui définit généralement leur champ d'application.

## Listes doublement chaînées

Une liste doublement chaînée (`Doubly Linked List` ou DLL) est une liste de nœuds liés dans les deux sens aux autres nœuds. Les opérations d'itérateurs peuvent se faire dans les deux sens, en addition ou en suppression, avec un coût de O(1) lorsque la structure sous-jacente est une DLL. Elle fournit également un support pratique pour les piles et les queues.

- SplDoublyLinkedList
  - SplStack
  - SplQueue

## Tas

Les tas sont des structures de type arbre, qui suivent une propriété caractéristique : chaque nœud est plus grand ou égal que ses enfants, lorsqu'on les compare avec la méthode implémentée de comparaison, qui est globale au tas.

- SplHeap
  - SplMaxHeap
  - SplMinHeap
- SplPriorityQueue

## Tableaux

Les `Array` sont des structures qui stockent les données d'une manière contiguë, et accessible via des index.

> Note: Ne les confondez pas avec le type array natif de PHP. Les tableaux PHP sont en réalité des tableaux de hachage ordonnés. Cependant, SPL fournit la classe ArrayObject pour envelopper les tableaux PHP dans un objet.

- SplFixedArray

## Carte (`Map`)

Une carte est une structure de données qui stocke des paires clé/valeur. Les tableaux PHP peuvent très bien servir de cartes entre des chaînes ou entiers et des valeurs. SPL fournit une carte allant des objets vers des données. Cette carte peut aussi servir d'ensemble d'objets.

- SplObjectStorage

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open