# 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.

## Liste doublement chaînées

Une liste doublement chaînée (`Doubly Linked List` ou DLL) est une liste de nœud 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és des tableaux de hachage ordonnées. 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 paire clé/valeur. Les tableaux PHP peuvent très bien servir de cartes entre des chaînes ou entiers et des valeurs. SPL fournit un objet de type carte pour les données. Cette carte peut aussi servir d'ensemble d'objets.

- SplObjectStorage