The Containers component defines 32-bit and 64-bit containers that have been optimized for parallelism (e.g. List, LinkedList, Map, Set, Queue, PriorityQueue, Stack, BitArray, BitList). On the outside, PTL containers are very similar to containers that many developers are already familiar with, but they have an innovative and proprietary underlying design, which is very conducive to parallelism. This design also allows resizable containers to increase and decrease their size in amortized constant time (no weak worst-case).
The containers contain parallel versions of many common methods (e.g. Add, Assign, Contains, CopyTo, Equals, Erase, IndexOf, Insert, Remove, RemoveAt). In addition, all of the algorithms from PTL's Iterator Algorithms component can be used with any of the containers from the Containers component.
All containers provide iterators that allow the contained objects (elements) to be addressed. Every container defines its iterators and the member functions that create them (e.g. Begin(), End()). Iterators are the primary interface between algorithms and containers.
You can use the PTL Iterator Algorithms component with PTL containers, and you can also design your own algorithms that work with PTL containers by implementing the Iterator interfaces from the Progeneric.PTL.Interfaces component. The Interfaces component is bundled with the Containers component, and you can view its online documentation for more information.