標頭檔案:#include
參考文章:
[1] c++中vector的使用方法
[2] 《c++ primer》
vector是乙個類模板
(1) 尾部插入數字:
#include #include using namespace std;
vectorvec;
string a;
way1:
vec.push_back(a);
/******************************************/
way2:
string str ;
vec.emplace_back(str, 2, 3); //將str索引2~3的子字串新增到vec尾處,2,3缺醒的話則將整個str新增
/******************************************/
for(auto i : vec)
(2) 使用下標訪問元素:只能對已存在的元素執行下標操作
#include #include way1:
vectorvec;
cout << vec[0] << endl; //下標是從0開始的:aaa
/****************************************/
way2:
返回vec下標i的引用,可以對原先該位置的元素進行修改
vec.at(0) = ;
注意:對於vector來說,不能使用下標的形式向其中新增元素。因vector要新增的位置是空的,自然也就沒辦法通過下標的形式去訪問這個位置,所以是error。
例如:如下操作是錯誤的
vectorivec;
for(decltype(ivec.size()) i = 0;ix != 10;i++)
ivec[i] = i; //嚴重錯誤,ivec不包含任何元素
(3)使用迭代器訪問元素:
vector::iterator it;
for(it = vec.begin(); it != vec.end(); it++)
cout << *it << endl;
(4)插入元素:在指定迭代器前(例如:str.begin())前插入值為val的元素,返回指向這個元素的迭代器在指定迭代器前(例如:str.begin())插入n個值為val的元素 ,返回指向這個元素的迭代器在指定迭代器前(例如:str.begin())插入區間[start, end)的所有元素 ,返回指向這個元素的迭代器
(7)刪除元素:
vec.erase(vec.begin()+2); //刪除第3個元素
vec.erase(vec.begin()+i,vec.end()+j);刪除區間[i,j-1];區間從0開始
注意刪除元素的時候可能會使得迭代器失效,所以最好不要將迭代器的值賦給某乙個變數,這樣erase之後這個變數就很可能會越界:
vectorstrvec;
auto beg = strvec.end();
for(auto i : strvec)
strvec.erase(strvec.begin()+1);
cout << *beg << endl;
(8)向量大小:
vec.size();
(9)清空:
vec.clear();
(10)reverse:作用:將元素翻轉(需要標頭檔案#include)
#include reverse(vec.begin(),vec.end()); //將元素翻轉,即逆序排列
在vector中,如果乙個函式中需要兩個迭代器,一般後乙個都不包含
(11)使用sort排序(公升序
):(需要標頭檔案#include)
#include sort(vec.begin(),vec.end()); //預設是按公升序排列,即從小到大
降序比較:可以通過重寫排序比較函式實現降序比較,如下:
#inlcude #include vectornum = ;
sort(num.begin(),num.end(),greater()); //整型陣列降序排序
vectorstr;
sort(str.begin(),str.end(),greater()); //字串陣列降序排序
(12)find查詢函式函式形式:
vector::iterator it = find(vecnum.begin(),vecnum.end(),targetnumber);
vectorrarray;
cout << getmid(rarray,num) << endl;
auto it = find(rarray.begin(),rarray.end(),(double)103);
if(it != rarray.end())
cout << *it << endl;
C 動態順序容器vector
c 動態順序容器vector 1.vector簡介 vector是c 標準模板庫中的部分內容,是模板類函式。之所以稱它為容器,是因為它能容納多種資料型別的物件。vector是順序容器,容器中的元素按照嚴格的線性順序排列,根據位置下標來儲存和訪問元素。同時它也是動態陣列,空間運用比較靈活,隨著元素加入...
順序容器 vector
一 底層實現 vector就是動態陣列.它也是在堆中分配記憶體,元素連續存放,有保留記憶體,如果減少大小後,記憶體也不會釋放.如果新值 當前大小時才會再分配記憶體.它擁有一段連續的記憶體空間,並且起始位址不變,因此它能非常好的支援隨即訪問,即操作符,但由於它的記憶體空間是連續的,所以在中間進行插入和...
順序容器vector
vector的關鍵在於其對大小的控制以及重新配置時的資料搬移效率。由於vector維護的是乙個連續線性空間,所以不論元素類別,普通指標都可以作為vector的迭代器而滿足必要條件,包括隨機訪問 操作符 等操作行為。vector提供的是random access iterators。typedef v...