C++STL

C++標準模板庫提供三種順序容器:vector,list和deque。vector類和deque類是以數組爲基礎的,list類是以雙向鏈表爲基礎的。

  1. 矢量(vector)類提供順序表。下標運算符[ ] 有效。矢量的內存用盡時,矢量自動分配更大的連續內存區,將原先的元素複製到新的內存區,並釋放舊的內存區。內存分配是由分配子(allocator)完成。
    矢量可以用來實現隊列、堆棧、列表和其他更復雜的結構。vector支持隨機訪問迭代子 。
    vector的迭代子通常實現爲vector元素的指針。所謂選擇容器類,實際上很大部分是在選擇所支持的迭代子。

使用矢量容器的聲明如下:
#include
……
vector vi; // seqlist
//定義存放整形序列的向量容器對象vi,長度爲0的空vector
vector vf; //存放實型序列的向量容器
vector vch; //存放字符序列的向量容器
vector<char*>vstr; //存放字符串序列的向量容器

矢量容器有多種構造函數,包括構造一個有n個元素的矢量。還可以爲每個元素用同一個對象來賦初值。還包括拷貝構造函數,可以由一個已有的矢量容器對象來初始化新容器各元素的構造函數。這些構造函數還可以顯式給出分配子(allocator)對象。
在這裏插入圖片描述

  1. 列表(list)是由雙向鏈表(doubly linked list)組成的。它有兩個指針域,支持的迭代子類型爲雙向迭代子。與雙鏈表類模板相似,但通用性更好,使用更方便。列表的定義在頭文件中。

在這裏插入圖片描述

  1. 雙端隊列(deque)(double-ended queue)類。雙端隊列允許在隊列的兩端進行操作。以順序表爲基礎,支持隨機訪問迭代子。
    雙端隊列放鬆了訪問的限制,對象既可從隊首進隊,也可以從隊尾進隊,同樣也可從任一端出隊。支持下標操作符“[ ]”。
    增加存儲空間可在內存塊中對deque兩端分別進行分配。新分配的存儲空間保存爲指向這些塊的指針數組,可以利用不連續內存空間。因此它的迭代子比vector的迭代子更加智能化。爲雙端隊列分配的存儲塊刪除雙端隊列時才釋放。
    使用雙端隊列,必須包含頭文件。

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章