The term container is used in software development, but also in network technology and online services. In general, containers are containers that hold objects of the same type. This can refer to file formats in which bit streams are combined for transmission. The term container format is used in file formats for audio, video, and copy protection, as well as in the Synchronous Digital Hierarchy (SDH).
In software development, a container is an object that in turn holds objects of the same type. A class with the main task of managing objects is called a container. Examples include lists, vectors, and associative fields. In general, you can add and remove objects from a container.
A container is an abstract object that stores similar data. Here, a container organizes the required storage space and provides methods - also called element functions - to access the data. The data is accessed either directly or via iterators, which can be used to access individual data elements of the container. Since software development often requires structures of the same kind, containers represent these structures - data and functions - as it were on a higher level. Containers are based on templates, which means that any data types can be stored in the containers. In addition, many containers have similar element functions to process data.
The concept of containers in C++ and Java distinguishes between
- Sequential containers,
- Container adaptors and
- Associative Containers.
Sequential containers have their elements arranged as a linear sequence. This includes dynamic arrays (vector), linked lists (list) or a queue "with two ends" (deque). This means that a deque is optimized as a sequence so that the operations at both ends are as efficient as with lists.
Container adaptors, in turn, rely on containers to provide special interfaces. Examples include queues, stacks, and the priority queue. Finally, the elements of associative containers have a key value and are sorted in a binary tree. These include trees (set), the sequence of key/value pairs (map), or even bit sets (bitset).
- In SDH hierarchy, containers are bit streams of input bit rates. A container is understood to be the basic packing unit, the payload capacity for tributary units (TU). The bit rate of a container is nominally synchronous to the basic SDH data rate. By adding a Path Overhead (POH), the container becomes a virtual container.