【語法回顧】c++stl:容器(一) - atp_ -
2012-07-12 12:05
byatp_,
968閱讀,
0順序容器,它將單一型別元素聚集起來成為容器,然後根據位置來儲存和訪問這些元素,這就是順序容器。順序容器的元素排列次序與元素值無關,而是由元素新增到容器裡的次序決定的。
標準庫定義來三種順序容器:vector,list,deque(雙端佇列讀音」deck」)
三種順序容器的介面卡:stack,queue,priority_queue
相關標頭檔案
#include#include
#include#include#include
vectorivec; //預設建構函式
vectorc(c2); //建立容器 c2的副本
vectorc(n, t); //用n個值為t 的元素建立並初始化容器
listmylist(3, 「haha」); // 3個」haha」字串初始化list
listmylist1(mylist.begin(), mylist.end()); // 初始化為其他容器的一部分
容器的儲存類型別的物件,只有當其元素型別提供預設建構函式時,才可以使用容器
car類沒有預設建構函式,但是含有乙個int形參的建構函式?1
2
3
4
5
vectorcars;
// 正確,沒有呼叫預設建構函式
vectorcars(10);
//錯誤,該宣告的含義是定義並初始化10個car類的物件,呼叫了預設建構函式,但是car沒有提供
vectorcars(10, 1);
//正確,呼叫來int形參的建構函式
vector< vector> lines; //必須用空格間隔開兩個》符號
*iter //返回迭代器iter所指向元素的引用
iter->number // 當容器中的元素為結構體或類時,相當於對其解引用,並返回number成員值
iter++; iter--; //迭代器的自增自減
iter1 == iter2 //當iter1和iter2指向同一容器的同一元素時相等,或者同時指向.end();
只有vector和deque中,迭代器支援的算數運算: iter+n -n, iter1 + iter2 – iter3; 關係運算:>,<,>=,<=
注意:在使用迭代器時,必須留意哪些操作會使迭代器失效,比如增刪等操作。例:當vector在執行來push_back的操作後,就不能再信任之前的iterator值了
size_type // 無符號整型,足以儲存最大長度可能的容器長度
iterator // 此容器的迭代器型別
reverse_iterator // 此容器按逆序定址的迭代器
const_iterator // 唯讀迭代器
const_reverse_iterator // 唯讀逆序迭代器
c.push_back(t) // 在容器c的尾部新增
c.push_front(t) // 在容器c 的前端新增
c.insert(iter, t) //在迭代器iter所指位置前新增元素t
c.insert(iter, itera, iterb) // 在迭代器iter所指位置前新增有迭代器itera,iterb所限制範圍內的元素
注意:容器元素的插入,複製結果都是原資料的副本,互不影響。
c.size() // 返回元素個數,型別為 c::size_type
c.empty()
c.resize(n) // 調整容器的長度大小,使其能夠枸容納n個元素
c.resize(n,t) // 新增的範圍都以元素t來填充
c.back() //返回容器c的最後乙個元素的引用
c.front() //返回容器的第乙個元素的引用
c[n] //下標操作,只有vector,deque (string) 可以使用
c.erase(p) // 刪除迭代器p所指向的元素
c.erase(b, e) //刪除迭代器b,e之間的元素
c.pop_back() //刪除容器最後乙個元素
c.pop_front() //刪除容器第乙個元素
c.clear() // 清空容器
c1.swap(c2) // c1,c2存放內容交換
c.assign(b, e) //重新設定c的元素,將迭代器b,e之間的元素複製到c中去,b,e必須不是指向c中元素的迭代器
C STL容器學習(一)
容器 一些特定型別物件的集合 順序容器 vector list forward list vector 可變大小陣列,支援快速隨機訪問 list 雙向鍊錶,只支援雙向順序訪問 forward list 單向鍊錶,只支援單向順序訪問 迭代器 迭代器 iterator 是一種物件,它能夠用來遍歷標準模板...
C STL常用容器(一)
使用時需要包含標頭檔案 include 1.初始化vector vec 16 定義了已知長度16的vector vector vec 64,2 定義了初值為2長度64的vector vector vec a 用a向量來建立向量 vector vec a.begin i,a.begin j 定義了值為...
C STL常用容器 一
4 4 2019 4 50 15 pm 2 set 集合 3 string 開始時候引入 includeusing namespace std typename 可以是 int double char node vectorname vector陣列 其中 arrayname 0 arrayname...