Delphi offers some fairly simple containers: list, queue, hash table, but does not have trees or tries.
I present here a multi-index container which maintains a doubly linked list, with multiple (sorted) indexes into it. The indexes are implemented as AVL trees. You can create custom indexes and perform high speed efficient sorting, searching and iteration.
Unlike the STL, no knowledge of templates is required.
This tutorial is a comprehensive update to my original multithreading tutorial, which takes into account changes in Delphi compiler technology, changes in underlying hardware technology, improvements to the Win32(64)API, Delphi extensions for OSX and Android, and the result of 15 odd years of learning in industry how threading technologies actually work.
At the moment, it is incomplete, (I only have so many hours in my life), but offers many newer threading techniques, and scalable implementations thereof.
Originally written in 2000, just a couple of years after I left University, this tutorial gives a reasonable introduction to Multithreading in Delphi.
Some of the material is a touch dated, and more recent versions of Delphi have built-in functionality which was manually written. All the basic concepts still apply, and most of the functions and API calls are still relevant and function in the same way.