# Structures des données

## Sommaire

- SplDoublyLinkedList
- SplStack
- SplQueue
- SplHeap
- SplMaxHeap
- SplMinHeap
- SplPriorityQueue
- SplFixedArray
- 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 noeud liés dans les deux sens aux autres noeuds. 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 noeud 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. Ne les confondez pas avec les tableau de PHP : ces tableaux sont implémentés comme des tables de hashage ordonnées.

- 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