一、順序容器型別
順序容器:vector、list、deque
介面卡:stack、queue、priority_queue
使用這些容器都必須使用相應的標頭檔案
二、容器元素初始化
cc; 建立乙個名為c的空容器
cc(c2); 建立容器c2的副本
cc(b,e); 建立c,其元素是迭代器b和e的範圍內的副本,區間為前閉後開。
cc(n,t); 建立n個值為t的元素建立c。只適用於順序容器
cc(n) ; 建立有n個初始化元素的容器c。只適用於順序容器
三、容器內元素的型別約束
1、元素型別物件必須支援賦值運算。
2、元素型別物件必須可以複製。
因此引用型別和io庫型別不能為容器的元素。
四、迭代器範圍
一般為左閉右開區間
五、容器定義的型別別名
size_type:無符號整形。
iterator: 此容器的迭代器型別
const_iterator:元素的唯讀迭代器型別
reverse_iterator:按逆序定址的迭代器,逆序迭代器做++操作將指向容器的前乙個元素
const_reverse_iterator:唯讀逆序迭代器
value_type:元素型別
六、begin和end成員
c.begin() 返回迭代器,指向第乙個元素。
c.end() 返回迭代器,指向最後乙個元素的下乙個位置
c.rbegin() 指向最後乙個元素
c.rend() 指向第乙個元素的前乙個位置
七、順序容器中新增元素
c.push_back(t):容器尾部插入乙個元素。適合所有順序容器。
c.push_front(t): 容器前段新增元素。只適合list和deque型別
c.insert(p,t); 在迭代器p所指向元素之前插入元素t,返回新元素的迭代器。
c.insert(p,n,t);在迭代器p所指向元素之前插入n個t,返回void。
c.insert(p,b,e); 在迭代器p之前插入由迭代器b和e標記的範圍內元素,返回void。
注意:容器元素都是副本
八、關係操作
1、如果兩個容器具有相同的長度且所有元素都相等,那麼這兩個容器就相等
2、如果兩個容器的長度不同,但較短的容器中所有元素都等於較長容器中對應的元素,則較短的容器小於另乙個元素。
3、如果兩個容器都不是對方的初始化子列,則他們的比較結果取決於所比較的第乙個不相等的元素。
九、容器大小的操作
c.size() 返回c中元素的個數
c.max_size() 返回容器c中可容納的最多元素個數
c.empty() 判斷容器是否為空
c.resize(n) 調整容器c的長度大小,使其能容納n個元素
c.resize(n,t) 調整容器c的大小為n,並初始化為t
十、元素訪問
c.back() 返回容器的最有乙個元素的引用
c.front() 返回容器c的第乙個元素的引用
c[n] 返回下標為n的元素的值。只適用於vector和deque
c.at(n) 返回下標為n的元素的值。只適用於vector和deque
十
一、刪除元素
c.erase(p) 刪除p所指向的元素,返回指向其下乙個元素的迭代器。
c.erase(b,e) 刪除迭代器b,e之間的元素,返回e的下乙個迭代器。
c.clear() 刪除c內所有元素
c.pop_back() 刪除c的最後乙個元素,返回void。
c.pop_front() 刪除c的第乙個元素,返回void。只適用於list和deque。
十
二、賦值和swap
c1 = c2 ; 刪除c1的所有元素,然後將c2的元素複製給c1.
c1.swap(c2); 交換內容,c1中存放的是c2的內容,c2存放的是c1的內容
c.assign(b,e) 重新設定c的元素,將迭代器b和e所標記的所有元素複製到c中,b和e必須不是指向c中元素的迭代器
c.assign(n,t) 將容器c重新設定為儲存n個值為t的元素。
十
三、介面卡
棧介面卡
s.empty()
s.size()
s.pop() 刪除棧頂元素,但不返回其值
s.top() 返回棧頂的元素值
s,push(item)
佇列介面卡和優先順序佇列介面卡
q.empty()
q.size()
q.pop() 刪除對首元素
q.front() 返回隊首元素,只適用於佇列
q.back() 返回隊尾元素,只適用於佇列
q.top() 返回具有最高優先順序的元素值,但不刪除該元素,只適應於優先順序佇列
q.push(item)對於queue,在隊尾壓入乙個新元素
對於priority_queue,在基於優先順序的適當位置插入新元素。
C 順序容器
1 概述 乙個容器就是一些特定型別物件的集合。順序容器型別 描述vector 可變大小陣列,支援快速訪問,在尾部之外的地方插入或刪除時可能很慢 deque 雙端佇列。支援快速訪問,在頭尾插入刪除會很快。list 雙向列表。只支援雙向順序訪問。插入刪除很快 forward list 單向列表。只支援單...
C 順序容器
一 各個順序容器效能差異主要體現在一下兩個方面 1.在容器中任意位置新增和刪除元素的代價 2.隨機訪問容器中元素的代價 vector list deque forward list array string vector是可變大小陣列,支援快速隨機訪問,在尾部插入和刪除元素較為方便 list是雙向鍊...
c 順序容器
1.幾種順序容器的比較 容器本質 特點適用範圍 vector 可變大小陣列 連續儲存,快速隨機訪問,除尾部插入刪除慢 預設使用 deque 雙端佇列 快速隨機訪問,除首尾插入刪除慢 兩端都需要新增刪除元素 list 雙向鍊錶 不支援隨機訪問 只能遍歷 插入刪除迅速,額外記憶體開銷大 需要中間插入元素...