“STL”和“C++標準庫”的區別是什麼?
標準模板庫 (STL) 是C++程式語言的一個軟體庫,它影響了C++標準庫的許多部分。它提供了四個元件,稱為演算法、容器、函式和迭代器。需要注意的是,“STL”或“標準模板庫”這個術語在ISO 14882 C++標準中任何地方都沒有出現。因此,將C++標準庫稱為STL是錯誤的,即STL和C++標準庫是兩件不同的事物,前者是後者的子集。
STL 包含:
容器
STL包含順序容器和關聯容器。容器是儲存資料的物件。標準順序容器包括vector、deque和list。標準關聯容器包括set、multiset、map、multimap、hash_set、hash_map、hash_multiset和hash_multimap。還有容器介面卡queue、priority_queue和stack,它們是具有特定介面的容器,使用其他容器作為實現。
迭代器
迭代器是一個物件,它使程式設計師能夠遍歷容器。STL實現了五種不同型別的迭代器:輸入(用於讀取一系列值)、輸出(用於寫入一系列值)、前向(可以讀取、寫入和向前移動)、雙向(像前向迭代器,但也可以向後移動)和隨機訪問(在一個操作中自由移動任意步數)。迭代器是STL通用性的主要特徵。
演算法
STL中的演算法是專門設計用於元素範圍的函式集合。範圍是可以透過迭代器或指標訪問的任何物件序列,例如陣列或某些STL容器的例項。STL中演算法的示例:sort(對範圍內的元素排序)、binary_search(測試排序序列中是否存在值)、min_element(返回範圍內的最小元素)等。請注意,所有這些演算法都可以應用於作為模板接受的任何資料型別。
在C++程式語言中,C++標準庫是類和函式的集合,它們是用核心語言編寫的,並且是C++ ISO標準本身的一部分。C++標準庫提供了一些通用容器、用於利用和操作這些容器的函式、函式物件、通用字串和流(包括互動式和檔案I/O)、對某些語言特性的支援以及用於日常任務(如查詢數字的平方根)的函式。以下是C++標準庫的一些特性:
流
這些庫用於處理C++中可用的不同型別的流。例如,一個流通常表示檔案流,這個類可以用來建立檔案、向檔案寫入資訊和從檔案讀取資訊,一個流表示字串流,通常用於操作字串等。
容器
這是一個用於以各種資料型別(如向量、集合、對映、堆疊、佇列等)儲存資料的類的集合。它們是STL的一個元件。
通用庫
像演算法、Chrono(用於時間)、迭代器、記憶體等等之類的庫。
數值庫
這個庫是C++程式可用於執行半數值運算的元件集合。例如, <complex> 定義了一個類模板,以及許多用於表示和操作複數的函式,<random> 用於生成(偽)隨機數等。
執行緒
這是在C++11中引入的庫,它主要處理併發性。
C標準庫
C標準庫中的每個標頭檔案都以不同的名稱包含在C++標準庫中,透過刪除“.h”並在開頭新增“c”來生成;例如,“time.h”變為“ctime”。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP