一、概述
1、集合中的每個物件都有乙個與之對應的索引,索引用於訪問物件。
2、使用vector必須包含標頭檔案:#include
3、vector能容納絕大多數的物件作為其元素,但是因為引用不是物件,所以不存在包含引用的vector。
二、使用
(1)定義
vectorivec;
vector> file;
(2)初始化
vectorv1; //建立了乙個空vector
vectorv2(v1);
vectorv2=v1;
vectorv3(n,val); //v3包含了n個重複的元素,每個元素的值都是val
vectorv4(n); //v4包含了n個重複地執行了值初始化的物件
vectorv5; //注意是花括號,不是圓括號
vectorv5=;
(3)新增元素
(a)push_back負責把乙個值當成vector物件的尾元素「壓到(push)」vector物件的「尾端(back)」,不能使用下標形式新增元素。
v2.push_back(i);
text.push_back(word);
(b)vec.insert(vec.begin()+i,a)
; //
在第i+1個元素前面插入a
(4)刪除元素
vec.erase(vec.begin()+2); //刪除第3個元素
vec.erase(vec.begin()+i,vec.end()+j); //刪除區間[i,j-1];區間從0開始
(5)訪問元素:v2[n]
(6)vector大小:v2.size()
(7)清空:
vec.clear()
(8)迭代器使用:
(a)begin負責返回指向第乙個元素的迭代器,end負責返回指向容器「尾後元素的下乙個位置」的迭代器,該迭代器指示的是容器的乙個本不存在的「尾後」元素,如果容器為空,則begin和end返回的是同乙個迭代器。eg. auto it1 = v.begin();
(b)迭代器基本操作
*iter //返回迭代器iter所指元素的引用
iter->men //解引用iter並獲取該元素的名為men的成員,等價於(*iter).mem
++iter //令iter指示容器中的下乙個元素
iter1==iter2 //若兩個迭代器指示的是同乙個元素或者它們是同乙個容器的尾後迭代器,則相等
(c)迭代器運算
iter + n //迭代器加上乙個整數值扔得乙個迭代器,迭代器指示的新位置與原來相比移動了若干個元素
iter1 - iter2 //兩個迭代器相減的結果是它們之間的距離
iter1 <= iter2 //左側迭代器指向的容器位置在右側迭代器指向位置之前
三、演算法
1、翻轉元素
reverse(vec.begin(),vec.end()); //將元素翻轉
2、排序
sort(vec.begin(),vec.end()); //預設是按公升序排列,即從小到大
vector 學習筆記
c 的標頭檔案是 include 沒有.h,而且還有加上命名空間using namespace std 主要演示vector的定義以及使用下標訪問,除了下標訪問,還有迭代器。include include using namespace std void main vectorivec for ve...
STL之vector學習筆記
參考sgi stl 及 侯捷 stl原始碼剖析 概述 vector是動態空間,隨著元素的加入,它的內部機制會自行擴充空間以容納新元素。但是它不是單純地 配置新空間 資料移動 釋放舊空間,它實際配置的大小會比客戶需求要大一點定義 sgi stl的vector實現於stl vector.h中,而不是ve...
STL學習筆記(三) vector
1 定義 建構函式 1 vector vec 的內容根據儲存型別定,如char short long char string 同時結構體亦可以,其未定義大小 struct st voctor vec 2 vector vec1 6 大小為6,值預設為0 3 vector vec2 6,8 大小為6,...