コンテナ (データ型)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/02/11 03:17 UTC 版)
![]() |
この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。(2025年2月)
|
コンピュータプログラミングにおいて、コンテナ(英: container)とはオブジェクトの集まりを表現するデータ構造、抽象データ型またはクラスの総称である。コレクション(英: collection)とも言う。コンテナには複数の種類があり、それぞれ独自の方法でオブジェクトを組織的に格納する。
よく知られたものには、
などがある。
同じ分類のコンテナであっても、実装形態の違いから、各種操作の計算量(計算時間)やメモリ上に占める空間的特性などが異なるものがある。例えばリストには主に動的配列によるリストと連結リストがあり、それぞれ場面によって向き不向きがある。
コンテナクラスは一般的に以下のような操作を実装している。
- 新しい空のコンテナを作成する
- 格納しているオブジェクト(要素)の数を得る
- すべての要素を取り除く(空にする)
- 新しい要素を格納する
- 特定の要素を取り除く
- 格納している要素へのアクセス手段を提供する
ジェネリックプログラミングをサポートする言語や、動的型付け言語では、一般的にコンテナの要素にはどのようなデータ型のオブジェクトも取ることができるが、言語によっては要素の型が満たすべき要件が制約として課されていることもある[1]。この要件を満たせば、他のコンテナ型を要素に取るコンテナを定義することもできる。またコンテナのサイズは要素数に合わせて自動的に変化する。
コンテナがオブジェクトを格納する方法には2種類ある。値によるものと参照によるものである。
- 値によるコンテナ
- オブジェクトのコピーを格納する。要素へのアクセスはそのコピーを返す。あるオブジェクトをコンテナに格納した(このときコピーされる)後で外部で変更を加えても、コンテナの中身には影響しない。
- 参照によるコンテナ
- オブジェクトへの参照やポインタのみを格納する。要素へのアクセスはその参照を返す。あるオブジェクトをコンテナに格納した後で外部で変更を加えると、コンテナの中身(その要素)が変更される。弱い参照によってガベージコレクションを考慮するものもある。
Javaのコレクション・フレームワークやC++のSTLなどで、多くの汎用コンテナが実装されている。なお、Javaの場合はジェネリクスは型消去によって実現されている[2]ことから、型パラメータにint
のようなプリミティブ型を指定することはできず[3]、java.lang.Object
から派生する参照型のみが許可される。そのため配列以外の汎用コレクションにプリミティブ型を直接格納することはできず、必ずjava.lang.Integer
のようなプリミティブラッパークラスを使う必要がある。.NETのジェネリクスではこの点が改善されており、汎用コレクションの要素に値型・参照型を問わず任意の型を指定できる。
脚注
関連項目
「コンテナ (データ型)」の例文・使い方・用例・文例
- コンテナの最後部のドア
- そのコンテナは人力で動かすには重すぎた。
- 我々は、鉄道コンテナ利用によるトラックとの共同一貫輸送を行い、物流コスト低減を目指している。
- パレットインコンテナの仕組みにより搬入時間は大きく削減された。
- 私たちはそれらをドラムからコンテナへ詰め替えました。
- そのコンテナがその船の中のどこに置かれていたかについては調査中です。
- そのコンテナが船内のどこに置かれていたかについては調査中です。
- そのコンテナにはまだ空きがある。
- そのコンテナをヤードに搬送する。
- 私はそのコンテナは既に配達されたと聞いております。
- 私はその商品をコンテナに積み込みました。
- 私はその商品をコンテナへ積みました。
- 私はその商品をコンテナへ積み込みました。
- 何かの積荷を車両、船またはコンテナなどに積み込む労働
- 車または船またはコンテナなどから多量の何かを取り出す労働者
- 貨物は安全で能率的出荷のためにコンテナに積まれた
- 燃料を蓄えるための大きいコンテナ
- 貨物用の大きいコンテナ
- カートリッジを保持する金属フレームかコンテナー
- コンテナ貨物を取り込むように設計された貨物船
- コンテナ_(データ型)のページへのリンク