想要理解關聯容器與順序容器的不同,最關鍵的是理解其基礎的資料結構,這樣就很自然的理解它所表現出來的性質。
兩類容器的根本差別在於,順序容器中的元素是「順序」儲存的(鍊錶容器中的元素雖然不是在記憶體中「連續」儲存的,但仍然是按「順序」儲存的)。理解順序的關鍵,是理解容器支援的操作形式以及效率。
對vector這樣的順序容器,元素在其中按順序儲存,每個元素都有唯一對應的位置編號,所有的操作都是按編號(位置)進行的。
例如,獲取元素(頭、尾、用下標獲取任意位置)、插入刪除元素(頭、尾、任意位置)、遍歷元素(按元素位置順序逐一訪問)。底層資料結構是陣列、鍊錶,簡單但已能保證上述操作的高效。而對於依賴值得元素訪問,例如查詢(搜尋)給定值(find),在這種資料結構上的實現是要通過遍歷完成,效率不佳。
而map這種關聯容器,就是為了高效實現「按值訪問元素」這類操作而設計的。為了達到這一目的,容器中的元素是按關鍵字儲存的,關鍵字值與元素資料建立對應關係,這就是「關聯」的含義。底層資料結構是紅黑樹、雜湊表等,可高效實現按關鍵字值查詢、新增、刪除元素等操作。
容器 順序容器 關聯容器
容器分為 順序容器 關聯容器,示意圖如下 順序容器 只儲存值,關聯容器 key value形式,關聯容器的乙個元素包含兩個部分 鍵值對 key value 有序容器 底層實現為紅黑樹,即容器內的key是有序的 無序容器 底層實現為hash table,雜湊表 區別 順序容器通過元素在容器中的位置順序...
順序容器vector 與 關聯容器map的總結
首先來區分一下概念 容器在c 中指使用乙個型別 來存放我們需要的資料。存放的資料型別可以是基本資料型別,也可以是程式設計師自定的類。下面來了解一下順序容器vector與關聯容器map。vector也被稱為動態陣列,存放在vector當中的資料在記憶體當中是順序排列的 和陣列的一樣 不過陣列的長度是定...
關聯容器和順序容器的差別
關聯容器和順序容器的本質差別在於關聯容器通過鍵 key 儲存和讀取元素,順序容器則通過元素在容器中的位置順序儲存和訪問元素。順序容器list vector deque和關聯容器map set型別分別適用的情況 1 list 型別適用於需要在容器中間插入和刪除元素的情況,例如以無序方式讀入一系列學生資...