一、list
1、一個list包括一個node,本身是一個指針,是以一個list大小為四位元組;
2、一個node抱括前後兩個指針,以及一個資料;
3、iterator疊代器本身并不是指針,而是一個類(因為連結清單内部是分離的,需實作++等操作)(除了vector, array,其他的疊代器都是類),
并且類内實作了衆多的操作符重載;

4、疊代器實作了前加和後加,和int類似,前加傳回指針,可以連續操作;後加傳回值,不能連續操作。
二、疊代器的設計原則
疊代器需實作算法所需的三種操作:
category:疊代器的移動性,(++, --, +=i.....)
difference_type: 兩個iterator之間的距離的表現
value_type: 元素類型(string等等)
還有兩種reference和pointer
三、vector
1、内含3個指針:start, end, end_of_storage
2、push_back記憶體不足時,會配置設定2倍的記憶體,并将插入元素的前、後内容都拷貝過去(同時還有原vector元素的析構),
是以為耗時的操作。
3、記憶體是連續的,是以疊代器隻需指針實作
四、array
内部其實就是一個數組
五、deque
1、分段連續,由多個buffer組成。buffer的順序由map決定(vector,内部是指針);
2、擴充時,另外配置設定buffer,前擴則放在map前,後擴放在map後,可實作雙向擴充;
3、疊代器包括4個元素,其中node指向控制中心(map),指向目前的buffer;first為目前buffer的首元素,last為末尾元素。當到達
邊界時,node會加1,指向下一個buffer,進而實作連續空間的假象。
4、插入時會進行判斷:如果靠近前端,則會移動前端元素,空出位置,反之則反。
六、stack和queue
1、底層容器預設為deque,但也可以選擇list
2、因為不允許周遊,是以沒有疊代器;
3、stack可以選擇vector作為底層結構,queue不行:沒有pop_front操作。都不可以選擇map/set作為底層結構;