1 30 2019 順序容器

2021-09-10 09:33:20 字數 1333 閱讀 3318

一、vector

vector是表現為可變長陣列的序列容器。

vector使用連續的儲存位置來儲存元素,也就是說,vector可以使用乙個指標上的偏移量來訪問其元素,就像陣列一樣。但與陣列不同的是,它們的大小可以動態變化,其儲存由容器自動處理。

在vector內部,使用乙個動態分配記憶體的陣列來儲存其元素。當插入新元素的時候,這個陣列可能需要重新分配,以增加大小,這意味著分配乙個新的陣列,並且將原有的元素從舊的位置移到新的陣列中。這個操作在時間方面是個開銷極大的操作,因此,vector不會每次新新增乙個元素就重新分配記憶體。

相反,vector可能會分配一些額外的儲存,以適應可能的增長,因此,vector可能具有乙個比嚴格需求的儲存size更大的capcity。不同的庫可能採取不同的策略去平衡記憶體使用情況和記憶體分配,但是在任何情況下,重新分配記憶體應該只發生在大小的對數增長區間 ,以便在vector末尾插入單個元素的操作可以被提供均攤為常數時間的複雜度。

因此,vector相比於陣列,vector消耗更多的記憶體,以換取管理儲存和動態增長的能力。

與其它的動態序列容器(deque, lists, forward_lists)相比

1、支援快速隨機訪問,在尾部插入刪除速度快

2、對於在其它位置插入或刪除元素的操作,它的效能要比其它的要差。

3、而且其迭代器和引用的一致性相比lists和forward_lists要差。

二、deque

雙端佇列

支援快速隨機訪問,在頭尾位置插入刪除速度快

三、list

雙向鍊錶

只支援雙向順序訪問,在list中任何位置進行插入和刪除都非常快。

四、forward-list

單項鍊表

只支援單向順序訪問,在list中任何位置進行插入和刪除都非常快。

五、array

支援快速隨機訪問,不能新增刪除元素。

六、string

專用於儲存字串,隨機訪問快,尾部新增刪除速度快。

元素儲存在連續記憶體空間中。

ps.1、string和vector儲存在連續空間意味著用下標計算位址空間非常快。

2、list和forward-list不支援元素的隨機訪問,故為了訪問乙個元素只能遍歷整個容器。

容器 順序容器

容器 include include include 容器元素型別必須滿足 1.支援賦值運算 2.物件可以複製 而io庫型別這兩個都不支援,因此,不能建立存放io型別物件的容器 容器的容器 記得加空格 list vector a list容器迭代器不支援演算法運算 也不支援關係運算 等,它只有自增,...

容器 順序容器 關聯容器

容器分為 順序容器 關聯容器,示意圖如下 順序容器 只儲存值,關聯容器 key value形式,關聯容器的乙個元素包含兩個部分 鍵值對 key value 有序容器 底層實現為紅黑樹,即容器內的key是有序的 無序容器 底層實現為hash table,雜湊表 區別 順序容器通過元素在容器中的位置順序...

stl容器之順序容器

stl容器分為順序容器和關聯容器 其中順序容器最常用的由vector,list,queue 1.vector vector 向量容器,可以看作變長陣列,長度可根據需要自行變化。使用的標頭檔案 include 定義方式 vector陣列名 vectorar 訪問容器內資料的方式和普通陣列相同,可以用a...