在電腦科學中,容器是指一種類、資料結構、[1][2]或者抽象資料類型,其實例為其他類的物件。換言之,它們以一種遵循特定存取規則的方法來儲存物件。容器的大小取決於其包含的物件(或元素)的數目。潛在的不同容器類型的實現可能在空間和時間複雜度上有所差別,這使得在給定應用場景中選擇合適的某種實現具有靈活性。
概覽
容器可以三種方式看待:
- 存取:即存取容器中物件的方式。在陣列中,存取憑藉陣列索引完成。在堆疊中,存取遵循先入後出(或後入先出)的順序[3]。在佇列中,存取遵循先入先出(或後入後出)的順序[4][5]。
- 儲存:即儲存容器中物件的方式。
- 遍歷:即遍歷容器中物件的方式。
容器類應當實現如下的方法:
- 建立一個新的空容器(即建構函式);
- 向容器中插入物件;
- 從容器中刪除物件;
- 刪除容器中的所有物件(即清空);
- 存取容器中的物件;
- 取得容器中物件的數目(即尺寸)。
容器有時結合迭代器實現。
分類
按儲存類型
單值或關聯容器
- 單值容器:每個物件在容器中被獨立儲存,並且其被直接或憑藉迭代器存取。
- 關聯容器:關聯陣列、對映或者字典是由鍵值對組成的容器,因此每一個鍵在給定容器中最多出現一次。如果一個值(物件)被儲存在給定容器中,那麼鍵可以用於尋找它。
圖形容器
部件工具箱使用特殊控制項(也稱作容器)去將其他控制項分組(窗口、面板等)。除它們的圖形特性之外,它們有和容器類一致的表現:它們存有它們子控制項的列表,並且允許對子控制項進行增加、刪除或取得等操作。
不同實現
- .NET: System.Collections (MSDN)
- ActionScript3: AS3Commons Collections Framework
- C++: C++標準庫 (SC++L) or the obsolete 標準模板庫 (STL)
- Java: Java集合框架(JCF)
- Objective-C: Foundation Kit的部分。
- PL/SQL: 集合[6]
- Python: 內建容器 list、dict、tuple和set,可使用collections模組進一步拓展。
- Scala: 在
scala.collection.mutable
andscala.collection.immutable
包中的可變及不可變容器。
參見
參考資料
- ↑ Paul E. Black (ed.), entry for data structure in Dictionary of Algorithms and Data Structures. US National Institute of Standards and Technology.15 December 2004. Accessed on Oct 04, 2011.
- ↑ Entry data structure in the Encyclopædia Britannica (2009) Online entry Accessed on Oct 04, 2011.
- ↑ LIFO(investopedia.com). [2016-08-19].
- ↑ FIFO(investopedia.com). [2016-08-19].
- ↑ FIFO(businessdictionary.com). [2016-08-19].
- ↑ PL/SQL Collections and Records. [2013-04-20].
外部連結
- Container Data Structure Declaration and Initialization
- Container data structures
- Python SortedContainers module A fast implementation of sorted list, sorted dict, and sorted set data types in Python.