HOME

TheInfoList



OR:

In
computer science Computer science is the study of computation, information, and automation. Computer science spans Theoretical computer science, theoretical disciplines (such as algorithms, theory of computation, and information theory) to Applied science, ...
, a container is a
class Class, Classes, or The Class may refer to: Common uses not otherwise categorized * Class (biology), a taxonomic rank * Class (knowledge representation), a collection of individuals or objects * Class (philosophy), an analytical concept used d ...
or a
data structure In computer science, a data structure is a data organization and storage format that is usually chosen for Efficiency, efficient Data access, access to data. More precisely, a data structure is a collection of data values, the relationships amo ...
Entry ''data structure'' in the
Encyclopædia Britannica The is a general knowledge, general-knowledge English-language encyclopaedia. It has been published by Encyclopædia Britannica, Inc. since 1768, although the company has changed ownership seven times. The 2010 version of the 15th edition, ...
(2009
Online entry
Accessed 4 Oct 2011.
whose instances are collections of other objects. In other words, they store objects in an organized way that follows specific access rules. The size of the container depends on the number of objects (elements) it contains. Underlying (inherited) implementations of various container types may vary in size, complexity and type of language, but in many cases they provide flexibility in choosing the right implementation for any given scenario. Container data structures are commonly used in many types of
programming language A programming language is a system of notation for writing computer programs. Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
s.


Function and properties

Containers can be characterized by the following three properties: * ''access'', that is the way of accessing the objects of the container. In the case of arrays, access is done with the array index. In the case of stacks, access is done according to the LIFO (last in, first out) order and in the case of queues it is done according to the FIFO (first in, first out) order; * ''storage'', that is the way of storing the objects of the container; * ''traversal'', that is the way of traversing the objects of the container. Container classes are expected to implement CRUD-like methods to do the following: * create an empty container (constructor); * insert objects into the container; * delete objects from the container; * delete all the objects in the container (clear); * access the objects in the container; * access the number of objects in the container (count). Containers are sometimes implemented in conjunction with
iterator In computer programming, an iterator is an object that progressively provides access to each item of a collection, in order. A collection may provide multiple iterators via its interface that provide items in different orders, such as forwards ...
s.


Types

Containers may be classified as either ''single-value containers'' or ''associative containers''. Single-value containers store each object independently. Objects may be accessed directly, by a language loop construct (e.g.
for loop In computer science, a for-loop or for loop is a control flow Statement (computer science), statement for specifying iteration. Specifically, a for-loop functions by running a section of code repeatedly until a certain condition has been satisfi ...
) or with an
iterator In computer programming, an iterator is an object that progressively provides access to each item of a collection, in order. A collection may provide multiple iterators via its interface that provide items in different orders, such as forwards ...
. An associative container uses an
associative array In computer science, an associative array, key-value store, map, symbol table, or dictionary is an abstract data type that stores a collection of (key, value) pairs, such that each possible key appears at most once in the collection. In math ...
, map, or dictionary, composed of key-value pairs, such that each key appears at most once in the container. The key is used to find the value, the object, if it is stored in the container. Associative containers are used in programming languages as class templates. Container abstract data types include: * FIFO queues * LIFO stacks *
Priority queue In computer science, a priority queue is an abstract data type similar to a regular queue (abstract data type), queue or stack (abstract data type), stack abstract data type. In a priority queue, each element has an associated ''priority'', which ...
s *
Lookup table In computer science, a lookup table (LUT) is an array data structure, array that replaces runtime (program lifecycle phase), runtime computation of a mathematical function (mathematics), function with a simpler array indexing operation, in a proc ...
s (LUTs) * Key-associated data structures ** Sets, containing and indexing objects by value or by specific property; ** Maps, associating to each key a "value" for lookup Common data structures used to implement these abstract types include: *
Arrays An array is a systematic arrangement of similar objects, usually in rows and columns. Things called an array include: {{TOC right Music * In twelve-tone and serial composition, the presentation of simultaneous twelve-tone sets such that the ...
and their derivatives *
Linked list In computer science, a linked list is a linear collection of data elements whose order is not given by their physical placement in memory. Instead, each element points to the next. It is a data structure consisting of a collection of nodes whi ...
s *
Binary search tree In computer science, a binary search tree (BST), also called an ordered or sorted binary tree, is a Rooted tree, rooted binary tree data structure with the key of each internal node being greater than all the keys in the respective node's left ...
s (BSTs), particularly self-balancing BSTs *
Hash table In computer science, a hash table is a data structure that implements an associative array, also called a dictionary or simply map; an associative array is an abstract data type that maps Unique key, keys to Value (computer science), values. ...
s


Graphic containers

Widget toolkit A widget toolkit, widget library, GUI toolkit, or UX library is a library (computing), library or a collection of libraries containing a set of graphical control elements (called ''widgets'') used to construct the graphical user interface (GUI) of ...
s also use containers, which are special widgets to group other widgets, such as
windows Windows is a Product lining, product line of Proprietary software, proprietary graphical user interface, graphical operating systems developed and marketed by Microsoft. It is grouped into families and subfamilies that cater to particular sec ...
, panels. Apart from their graphical properties, they have the same type of behavior as container classes, as they keep a list of their child widgets, and allow adding, removing, or retrieving widgets among their children.


In statically-typed languages

Container abstractions can be written in virtually any programming language, regardless of its type system. However, in strongly-typed
object-oriented programming Object-oriented programming (OOP) is a programming paradigm based on the concept of '' objects''. Objects can contain data (called fields, attributes or properties) and have actions they can perform (called procedures or methods and impl ...
languages it may be somewhat complicated for a developer to write reusable homogeneous containers. Because of differences in element types this results in a tedious process of writing and keeping a collection of containers for every elemental type. Many elemental types (e.g. integers or floating numbers) are inherently incompatible with each other because of the memory size they occupy and their semantic meaning and therefore require different containers (unless of course, they are mutually compatible or convertible). Modern programming languages offer various approaches to help solve the problem: :; Universal basic type :: A type that is universally assignable by any other (e.g. root Object class). :; Downcasting; :;Class substitution :: Previous three approaches above are used for weakly typed languages; these usually imply inheritance and polymorphism shared by types. :; Union types (C/C++ language) :: Permits storing types of different data sizes; it is hard to ensure which type is stored in a union upon retrieval however and should be carefully followed. :;
Type conversion In computer science, type conversion, type casting, type coercion, and type juggling are different ways of changing an expression from one data type to another. An example would be the conversion of an integer value into a floating point val ...
:; Templates or Generics :: Ensures reusability and type safety; may be thought as a reverse inheritance. However, this approach may require implementing a template specialization which is reputedly a time-consuming process given that types differ in their methods.


See also

* List of data structures * Standard Template Library#Containers *
Collection (abstract data type) In computer programming, a collection is an abstract data type that is a grouping of items that can be used in a Polymorphism (computer science), polymorphic way. Often, the items are of the same data type such as Integer (computer science), int ...
* Java ConcurrentMap


References


External links


Container Data Structure Declaration and Initialization
{{DEFAULTSORT:Container (Data Structure) Abstract data types Object-oriented programming eo:Ujo pt:Container (programação) qu:Wisina