目錄
0.寫在前面
1.基本操作
2.需求實現
2.1 reverse翻轉vector中元素
2.2 使用sort排序
2.3 列印vector的方式
2.4 構造乙個陣列,並且封裝為vector
3.vector作為引數的三種傳參方式(傳值 && 傳引用 && 傳指標)
4.vector中begin(),end(),front(),bck()區別
陣列並不是很適用於各種情況,當涉及到記憶體占用的時候,陣列可能就沒有vector的優勢了,而vector,動態陣列,比較適合某些情況。
vector::iterator it;
for(it=vec.begin();it!=vec.end();it++)
cout<<*it《使用reverse將元素翻**需要標頭檔案#include
reverse(vec.begin(),vec.end());將元素翻轉,即逆序排列
#include #include #include #include using namespace std;
void print_vec(vector&vec)
int main(void)
; //定義乙個vec,並且初始化為
print_vec(vec);
reverse(vec.begin(), vec.end()); //使用reverse(algorithm中函式)
print_vec(vec);
return 0;
}
可以使用algorithm中sort函式,預設是公升序從小到大,可以通過自定義比較器,實現從大到小逆序排序。
#include #include #include #include using namespace std;
void print_vec(vector&vec)
bool comp(const int &a, const int &b)
int main(void)
; //定義乙個vec,並且初始化為
print_vec(vec);
sort(vec.begin(), vec.end()); //使用預設的sort公升序
print_vec(vec);
sort(vec.begin(), vec.end(), comp); //自己構造比較器,實現逆序,從大到小排序
print_vec(vec);
return 0;}/*
輸出結果:
開始列印vec:
1 7 2
開始列印vec:
1 2 7
開始列印vec:
7 2 1
*/
#include #include #include #include using namespace std;
void print_01(vector&vec)
void print_02(vector&vec)
void print_03(vector&vec)
cout << endl;
}int main(void)
; //定義乙個vec,並且初始化為
print_01(vec);
print_02(vec);
print_03(vec);
return 0;}/*
print_01開始列印vec:
1 7 2
print_02開始列印vec:
1 7 2
print_03開始列印vec:
1 7 2
*/
int nums[4] = ;
vectorvec(nums, nums + 4);
c++中常用的vector容器作為引數時,有三種傳參方式,分別如下:
注意,三種方式分別有對應的const形式,不在此討論。
三種方式對應的呼叫形式分別為:
三種方式的效果分別為:
#include #include #include #include using namespace std;
vectortwosum(vector&nums, int target);}
int main(void)
; vectorvec(nums, nums + 4);
int target = 9;
vectorres = twosum(vec, target); //這個是vector的傳引用
//cout << vec << endl;//不能直接cout乙個vector
for (int i = 0; i < res.size(); ++i)
cout << res[i] << " ";
return 0;
}
向量容器(vector)是一種順序容器,是一塊連續分配的記憶體,支援隨機訪問,從資料安排的角度看,和陣列極其相似,陣列跟vector的區別在於:陣列是靜態分配空間,一旦分配了空間的大小,就不可以再改變了,例如,int a[6];而vector是動態分配記憶體,隨著元素的不斷插入,它會按照自身的一套機制不斷擴充自身的容量,vector容器的容量增長是按照容器現在容量的一倍進行增長。
begin函式:
函式原型:
iterator begin();
const_iterator begin();
功能:返回乙個當前vector容器中起始元素的迭代器。
end函式:
函式原型:
iterator end();
const_iterator end();
功能:返回乙個當前vector容器中末尾元素的迭代器。
front函式:
函式原型:
reference front();
const_reference front();
功能:返回當前vector容器中起始元素的引用。
back函式:
函式原型:
reference back();
const_reference back();
功能:返回當前vector容器中末尾元素的引用。
C 動態陣列vector實現
最近在做將matlab 轉化為c c 的工作,在實際應用時,發現動態陣列非常重要,我在學習的時候也踩了許多坑,這篇就當做一篇踩坑筆記,希望讀者能夠繞開我踩過的坑,順利應用動態陣列。其實在c語言中,都是靜態陣列,即需要在定義的時候就定下該陣列的長度,然而這在實際的應用中,很大的一部分情況是我們並不知道...
VECTOR動態陣列
vector是同一種型別的物件的集合 vector的資料結構很像陣列,能非常高效和方便地訪問單個元素 vector是乙個類模板 class template 要使用vector必須包含相關標頭檔案 include using std vector 注 空間是連續的 空間是可以擴充套件的 貌似是矛盾的...
Vector 動態陣列
容器 順序式容器 vecto 動態陣列,從末尾快速插入刪除,直接訪問任何元素 list 雙鏈表,從任何地方快速插入刪除 deque 雙向佇列,從前面與後面快速插入刪除,直接訪問任何元素 priority queue 優先佇列,最高優先順序元素總是最先出列 stack 棧,後進先出 先進後出 關聯式容...