一、list的介紹
1、list是可以在常數范圍內在任意位置進行插入和刪除的序列式容器,并且該容器可以前后雙向迭代
2、list的底層是雙向鏈表結構,雙向鏈表中每個元素存儲在互不相關的獨立節點中,在節點中通過指針指向其前一個元素和后一個元素
3、list和forward_list非常相似,最主要的不同在于forward_list是單鏈表,只能朝前迭代,讓其更簡單高效
4、與其他序列式容器(vector、array、deque)相比,list通常在任意位置進行插入、移除元素,執行效率更好
5、與其他序列式容器相比,list和forward_list最大的缺陷是不支持任意位置的隨機訪問,必須從頭部或者尾部迭代到該位置
二、list的介紹
2.1 定義
2.2 使用
注意:
1、begin和end為正向迭代器,對迭代器執行++操作,迭代器向后移動
2、rbegin和rend為反向迭代器,對迭代器執行++操作,迭代器向前移動
2.3 Capacity
2.4 Element access
2.5 Modifiers
三、list的迭代器失效
迭代器失效即迭代器所指向的節點無效,即該節點被刪除了。因為list的底層結構是帶頭節點的雙向循環鏈表,因此在list中進行插入時是不會導致list的迭代器失效的,只有在刪除時才會失效,并且失效的只是指向被刪除節點的迭代器,其他迭代器不會受到影響。
四、list與vector的區別
vector與list都是STL中非常重要的序列式容器,由于兩個容器的底層結構不同,導致其特性與應用場景不同,最主要的區別如下: