Difference between revisions of "Data Structures, Containers, Collections/fr"

From Lazarus wiki
Jump to navigationJump to search
(Created page with "{{Data_Structures,_Containers,_Collections}} == Introduction == La plupart des programmes travaillent sur des données, soit en cherchant, en triant, en itérant ou simplemen...")
 
Line 7: Line 7:
  
 
== RTL ==
 
== RTL ==
* Classes unit
+
* Dans l'unité Classes
** TList: Manages a list of pointers, can search and sort the list, has event notification feature
+
** TList: Gère un liste de pointeurs, peut chercher et trier la liste,possède une caractéristique de notifcation d'événement.
** TFPList: Manages a list of pointers, can search and sort the list, without event notification feature, faster than TList
+
** TFPList: Gère une liste de pointeurs, peut chercher et trier la liste, n'a pas de notification d'événement, plus rapide que TList.
** TStrings: Manages a list of strings, can search, split, save to / load from file, store objects, act like associative array, etc., is an abstract class
+
** TStrings: Gère une liste de chaînes, peut chercher, sectionner, sauver vers / charger depuis un fichier, stocker des objets, agir comme un tableau associatif, etc., est une classe abstraite.
** TStringList: TStrings descendant, implements abstract methods of TStrings, can sort, handle duplicates, has event notification feature, a concrete class
+
** TStringList: Descendant de TStrings, implémente les méthodes abstraites de TStrings, peut chercher, trier, manipuler les doublons, a la caractéristique de notification, c'st un classe concrète.
** TBits: Manages a list of bits (0 or 1), useful for bit-map (not bitmap image format)
+
** TBits: Gère une liste de bits (0 or 1), utile pour bit-map (pas les format d'image)
** TCollection and TCollectionItem: Forms basic management of named items
+
** TCollection and TCollectionItem: Forme une gestion basique d'articles nommés.
* FGL (Free Generics Library) unit
+
* Unité FGL (Free Generics Library)
 
** TFPGList
 
** TFPGList
 
** TFPGObjectList
 
** TFPGObjectList

Revision as of 14:32, 28 July 2014

English (en) français (fr)

Introduction

La plupart des programmes travaillent sur des données, soit en cherchant, en triant, en itérant ou simplement insert ou récupère. Donc, des moyens de structure de données, conteneurs et collection sont requis.

Free Pascal vient avec de nombreuses structures de données, à différents niveaux (RTL, FCL) mais il y a aussi des solutions tierces-partie offrant de telles caractéristiques.

RTL

  • Dans l'unité Classes
    • TList: Gère un liste de pointeurs, peut chercher et trier la liste,possède une caractéristique de notifcation d'événement.
    • TFPList: Gère une liste de pointeurs, peut chercher et trier la liste, n'a pas de notification d'événement, plus rapide que TList.
    • TStrings: Gère une liste de chaînes, peut chercher, sectionner, sauver vers / charger depuis un fichier, stocker des objets, agir comme un tableau associatif, etc., est une classe abstraite.
    • TStringList: Descendant de TStrings, implémente les méthodes abstraites de TStrings, peut chercher, trier, manipuler les doublons, a la caractéristique de notification, c'st un classe concrète.
    • TBits: Gère une liste de bits (0 or 1), utile pour bit-map (pas les format d'image)
    • TCollection and TCollectionItem: Forme une gestion basique d'articles nommés.
  • Unité FGL (Free Generics Library)
    • TFPGList
    • TFPGObjectList
    • TFPGInterfacedObjectList
    • TFPGMap
    • TFPGMapInterfacedObjectData

FCL

FCL-Base

  • AVL_Tree unit
  • Contnrs unit
    • TFPObjectList
    • TObjectList
    • TComponentList
    • TClassList
    • TOrderedList
    • TStack
    • TObjectStack
    • TQueue
    • TObjectQueue
    • TFPHashList
    • TFPHashObjectList
    • TFPDataHashTable
    • TFPStringHashTable
    • TFPObjectHashTable
    • TBucketList
    • TObjectBucketList

FCL-STL

  • GVector unit
    • TVector: Implements dynamically self-resizing array, item order is based on insertion order
  • GSet unit
    • TSet: Implements red-black tree backed set, no order is guaranteed
  • GHashSet unit
    • THashSet: Implements hashtable backed set, no order is guaranteed
  • GStack unit
    • TStack: Implements stack, LIFO (last in first out) order
  • GQueue unit
    • TQueue: Implements stack, items are pushed from front, FIFO (first in first out) order
  • GPriorityQueue unit
    • TPriorityQueue: Implements heap backed priority queue, order is based on given compare function
  • GDeQue unit
    • TDeque: Implements double ended queue, items can be pushed and popped from either front or back
  • GMap unit
    • TMap: Implements TSet (and therefore, red-black tree) backed map
  • GHashMap unit
    • THashMap: Implements hashtable backed map
  • GTree unit
    • TTree: Implements k-ary tree, supports depth first and breadth first traversal

Lazarus/LCL

  • AvgLvlTree: extended versions of the FPC/FCL TAVLTree and TAVLTreeNode; see AVL Tree

3rd party

project license generic types notes
Containers library for Lazarus ?? no al,rb,hm,hs,ll,q,s,v port of public domain Delphi Container Library
heContnrs BSD3 yes ... ...
Fundamentals BSD no ... in Utils/cDataStructs.pas
RBS AntiDOT GPLv2 ?? ... ...
LightContainers FPC no+yes ... Generic and non-generic variants. (Delphi does not optimize generics) Quite lowlevel
DeCAL MPL no ... browse variants + interfaces, relatively slow.
hovadur DeCAL MPL no al, as, ll, rb, hm, hs, tm, ts, bs guide.pdf DeCAL works in Lazarus (windows 64 bit/32 bit, linux 64 bit/32 bit) and Delphi7, Delphi XE2.
StringHashMap MPL1.0 ?? ... port of code from JCL
GContnrs LGPLv2 yes v, hm, hs, ll, q, dq, s, ts, tm, bs ...
code data type
al array list
as array set
rb red-black tree
hm hashmap
hs hashset
ll linked list
q queue
dq dequeue
s stack
v vector
tm treemap
ts treeset
bs bitset