Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

Container (abstract data type)

From Wikipedia, the free encyclopedia
Software class or data structure whose instances are collections of other objects
"Container (computer science)" redirects here. For the abstract notion of containers intype theory, seeContainer (type theory). For other uses, seeContainer (disambiguation).
Not to be confused withCollection (abstract data type).
This article mayrequirecleanup to meet Wikipedia'squality standards. The specific problem is:text is clunky. Please helpimprove this article if you can.(March 2012) (Learn how and when to remove this message)

Diagram of the class and interface hierarchy of theJava collections framework

Incomputer science, acontainer is aclass or adata structure[1][2] 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 ofprogramming languages.

Function and properties

[edit]

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 theLIFO (last in, first out) order and in the case of queues it is done according to theFIFO (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 implementCRUD-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 withiterators.

Types

[edit]

Containers may be classified as eithersingle-value containers orassociative containers.

Single-value containers store each object independently. Objects may be accessed directly, by a language loop construct (e.g.for loop) or with aniterator.

An associative container uses anassociative array, 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:

Common data structures used to implement these abstract types include:

Graphic containers

[edit]

Widget toolkits also use containers, which are specialwidgets to group other widgets, such aswindows,panels. Apart from their graphical properties, they have the same type of behavior as container classes, as they keep a list of their childwidgets, and allow adding, removing, or retrievingwidgets among their children.

In statically-typed languages

[edit]
See also:Statically-typed programming language andStrong and weak typing

Container abstractions can be written in virtually any programming language, regardless of its type system.[3]: 273  However, instrongly-typedobject-oriented programming 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.[3]: 274–276 

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).[3]: 274–276  Modern programming languages offer various approaches to help solve the problem:[3]: 274–281 

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
Templates orGenerics
Ensures reusability and type safety; may be thought as a reverse inheritance. However, this approach may require implementing atemplate specialization which is reputedly a time-consuming process given that types differ in their methods.[3]: 281 

See also

[edit]

References

[edit]
  1. ^Paul E. Black (ed.), entry fordata structure inDictionary of Algorithms and Data Structures. USNational Institute of Standards and Technology.15 December 2004. Accessed 4 Oct 2011.
  2. ^Entrydata structure in theEncyclopædia Britannica (2009)Online entry Accessed 4 Oct 2011.
  3. ^abcdeBudd, Timothy (1997).An introduction to object-oriented programming (2nd ed.). Reading, Mass.: Addison-Wesley.ISBN 0-201-82419-1.OCLC 34788238.

External links

[edit]
Types
Abstract
Arrays
Linked
Trees
Graphs
Uninterpreted
Numeric
Reference
Text
Composite
Other
Related
topics
Retrieved from "https://en.wikipedia.org/w/index.php?title=Container_(abstract_data_type)&oldid=1317423322"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2026 Movatter.jp