1.可以用下標索引來訪問
2.是乙個動態陣列,可以存放基本資料型別、結構、類等
3.是一種資料結構(順序儲存的線性表),元素呈線性順序連續排列,是一種可以自動增加長度的陣列。
4.vector分配記憶體空間時,會比實際所需的多分配一些,使以後插入方便。
5.使用前新增標頭檔案#include
1.vector的初始化
(1)宣告乙個size為0的vec向量
vectorvec;(2)宣告size不為0的vec向量
vectorvec1(5); //vec1是定義了的具有5個元素的向量,初值不確定(3)用已知向量a給vec向量賦初值vectorvec2(5,1); //vec2的內容為1,1,1,1,1
vectorvec3; //vec3的內容為1,2,3,4,5
vectorvec(a);//用向量a給vec賦值,vec的值和a的值完全相等(4)通過陣列賦初值vectorvec(a.begin(),a.begin+3);//將向量a中從0-2(3個)的元素賦值給vec
int arr[5] = ;(5)錯誤的賦值vectorvec(arr, arr + 5); //將arr陣列的0-4的元素賦值給ec向量(和vec.end()指標統一)。
vectorvec(&arr[0], &arr[4]);
vectorvec;2.向vector陣列內插入元素。for(int i=0;i<10;++i)//下標只能用來獲取已經存在的元素
注:(1)向末尾插入時,可以直接插入,如果預留的空間不夠,才會重新分配記憶體(2)向中間某個位置插入時,由於vector的底層實現還是陣列,插入點以後的所有節點都需要重新分配記憶體。
(1)push_back(同型別)在vector末尾插入新元素
vectorvec1;(3)assign()vec1.push_back(1);
int a[6]=;
vectorb;
vectorc(a,a+5);
for(vector::iterator it=c.begin();it(2)insert()第乙個引數為迭代器,作用為在迭代器前面插入新元素
vector::iterator it;
it=vec2.begain();
vec2.insert(it,5); //在第乙個元素前插入5
vec.insert(vec.begin(),6);//在第乙個元素前插入6
vec2.insert(v.begin()+2,1);//在迭代器中第二個元素前插入新元素
vec2.insert(vec.begin(),2,6);//在第乙個元素前插入2兩個6
vec.insert(vec.begin()+1,a+2,a+6);//在vec第乙個元素前插入a的第三個元素到第五個元素(不包括a+6)
vec3.assign(2,5); //清除以前的所有元素,加入兩個53.刪除元素:vec3.assign(a.begin(),a.begin()+3);//將a的0-2個元素賦值(加入)向量vec3
(1)pop_back()刪除最後乙個元素。
(2)erase()刪除指定位置元素。(其中的引數要是指標變數如begain(),end(),及迭代器的值)
vec.erase(vec.begin()+2);//刪除第三個元素(3)clear()清除所有元素。vec.erase(a.begin()+1,a.begin()+3);//刪除第乙個到第二個元素
(4)empty()判斷該陣列是否為空
4.訪問與遍歷
(1) 以下標訪問
vectora;(2)以迭代器訪問for(int i = 0; i < a.size(); i++)
vector::iterator it;(2)排序for(it=a.begin(); it!=a.end(); it++)
cout<5.其他
front()訪問第乙個元素的值
begin()訪問第乙個元素的位址
back()訪問最後乙個元素的值
end()訪問最後乙個元素的位址
size()陣列的元素個數
resize(10)陣列的元素個數調整至10個,多刪少補,值隨機
a.swap(b)a中的元素和b中的元素整體交換
6.常用演算法
(1)逆序排列
#include
reverse(vec.begin(), vec.end());
//從小到大排序(3)複製#include
sort(vec.begin(), vec.end());
//從大到小排序
//(1)法一: reverse函式
//(2)法二:
bool cmp(const int& a, const int& b)
sort(vec.begin(), vec.end(), cmp);
#include(4)查詢,若存在返回其在向量中的位置copy(a.begin(),a.end(),b.begin()+1);
#include題目舉例:ccf 202006-2 稀疏向量find(a.begin(),a.end(),10);
#includeint main()#include
using namespace std;
); //注意這種新增格式
}for(int j=0;j>index>>value;
v.push_back();
}long long sum=0;//求內積相乘可能超過int範圍
int i=0,j=0;
while(ielse if(u[i].firsti++;
else
j++;
}cout } include vectorarryname vector int myarray vector myarray2 node 是結構體 vector double myarray3 vectorint array 兩維均可變長的變長二維陣列 之間一定要有空格 否則c11之前認為是向右可能報錯 vec... vector是同一種型別的物件的集合,每個物件都有乙個對應的整數索引值。vector成為容器,因為它能包含其他物件,所有物件必須是同一種型別。include using std vector 注意 vector是一種類模板,不是一種資料型別,它可以來定義任意多種資料型別。如vector和vector... 1 可將向量 vector 想象成為乙個在程式執行時能改變長度的陣列。因為在c c 中定義了乙個陣列之後,這個陣列是固定長度的,不能隨意改變大小,向量和陣列用處相同,不同之處在於能自由改變大小。2 宣告變數v是基型別為int的向量 vectorv 3 vector代表乙個模板類,可以將t換成任意資料...C 標準模板庫 vector
標準庫vector模板
C 標準模板庫 向量(vector)