c++具有內建資料結構,但為了更好的滿足開發者的需求,c++標準庫提供了多種容器來供程式設計師呼叫,本篇部落格主要是順序容器的相關知識點總結
在c++中,容器主要是一些特定型別的集合,順序容器為程式設計師提供儲存和順序訪問的能力,主要的容器型別有vector、deque、list、forward_list、array、string,與內建資料型別相比,容器往往具有更好的靈活性和安全性,因此有必要掌握,下面分別進行介紹:
向量vector:
介紹:可變陣列大小,支援快速隨機訪問,缺點是在尾部之外的位置進行插入或刪除元素可能很慢
初始化定義方法:vectorv;注意在早期版本的編譯器中,如果typeelem為另外乙個vector型別,則需要在兩個相鄰的》中間以空格隔開,否則報錯
雙端佇列:deque
介紹:支援隨機訪問,在頭尾插入元素速度很快
初始化定義方法:dequed;
雙向鍊錶:list
介紹:支援雙向順序訪問,在鍊錶的任意位置進行元素的插入或刪除速度都很快
初始化定義方法:listlistexem;
單項鍊表:forward_list
介紹:支援單向順序隨機訪問,在鍊錶的任意位置進行插入和刪除速度都很快
初始化定義方法:forward_listflist;
陣列容器:array
介紹:固定陣列大小,支援快速隨機訪問,不能新增或刪除元素,具有跟內建陣列相似的性質,但相對於內建陣列具有更好的安全性,也更加方便操作,例如支援陣列賦值
初始化定義方法:arrayarr;
字串容器:string
介紹:與vector性質相似,不同之處在於專門用來儲存字元資料
初始化定義方法:string str;string str(「stringelem」);
c++標準庫的順序容器型別大致就這麼多,他們在執行不同的操作時效能各有優劣,需要程式設計師根據需要自行選用,下面介紹一下容器的遍歷及訪問操作,對容器進行遍歷,通常都會用到迭代器,迭代器是c++標準庫為了方便容器操作而定義的乙個介面型別,iterator beg = ss.bengin();以此方式可以定義並初始化乙個迭代器,在c++11標準支援auto資料型別定義,即左值型別根據右值的資料型別來定,故迭代器也可以用auto beg = ss.begin();的方式來定義,對於乙個容器,都定義有last()方法來獲取他的尾後迭代器,注意他是指向最後乙個元素的下乙個位置,即乙個沒有實際意義的位置,在使用過程中一定要注意這一點
在c++標準中所有的容器都支援相等運算子,但是只有順序容器支援關係運算子,因此應該養成使用相等運算子進行條件判斷的習慣。
容器中凡是涉及到訪問元素的操作都返回的事元素的引用,如果要使用變數來改變迭代器的元素值,必須將相應的變數定義為引用型別,
C 知識點複習 C 標準庫
過載左移操作符 操作符 的原生意義是按位左移,例如 1 2 其意義是將整數1按位左移2位,即 0000 0001 0000 0100 過載左移操作符,將變數或常量左移到乙個物件中 示例 include char endl n class console console operator char c...
C 標準庫 順序容器
二 容器的選擇 三 容器的操作 容器就是特定型別物件的集合。順序容器為程式設計師提供了控制元素儲存和訪問順序的能力,這種順序不依賴於元素的值,而是與元素加入容器時的位置相對應。相比於陣列,它可以很隨意的實現元素的新增 刪除等,我們也無需擔心記憶體分配的問題。要使用容器,必須包含相應的標頭檔案 inc...
C 標準庫 順序容器
容器是容納特定型別物件的集合。順序容器將單一型別元素聚集起來,並且根據位置來儲存和訪問這些元素。順序容器中元素排列順序與元素值無關,而是根據元素值新增到容器中的次序決定的。標準庫中有三種順序容器,分別是vector,list與deque。其中vector支援隨機的快速訪問,因為vector中存放資料...