forward_list 是 C++ 11 新添加的一類容器,其底層實現和 list 容器一樣,采用的也是鏈表結構,只不過 forward_list 使用的是單鏈表,而 list 使用的是雙向鏈表(如圖 1 所示)。
圖 1 單鏈表( a) )和雙向鏈表( b) )
圖 1 中,H 表示鏈表的表頭。
通過圖 1 不難看出,使用鏈表存儲數據最大的特點在于,其并不會將數據進行集中存儲(向數組那樣),換句話說,鏈表中數據的存儲位置是分散的、隨機的,整個鏈表中數據的線性關系通過指針來維持。
因此,forward_list 容器具有和 list 容器相同的特性,即擅長在序列的任何位置進行插入元素或刪除元素的操作,但對于訪問存儲的元素,沒有其它容器(如 array、vector)的效率高。
另外,由于單鏈表沒有雙向鏈表那樣靈活,因此相比 list 容器,forward_list 容器的功能受到了很多限制。比如,由于單鏈表只能從前向后遍歷,而不支持反向遍歷