?一、為什么要用vector而不是數組
雖有嘉肴,弗食,不知其旨也。______,____,____________。
簡單來說就是節約內存,不容易RE?
二、如何使用vector?
既謂之數組,則用之如數組
1.定義
vector<數據類型>名稱
vector<int >a;
2.向末端添加元素
?It is something that only??Apple??vector can do
a.push_back(添加的元素)
a.push_back(i)//向a的末端添加一個數i
3.隨機訪問
a[i]
4.遍歷 (C++14版本)
for(auto i=a.begin();i!=a.end();i++){cout<<*i<<" ";}
因為i實際上是迭代器,所以輸出的時候記得解引用?
5.插入元素
// 示例:vector的快速插入
vector<int> vec = {1, 3, 4};
vec.insert(vec.begin() + 1, 2); // 插入元素2 → {1,2,3,4}
擴展:vector+二分動態維護中位數,代替堆
P1168 中位數 - 洛谷
這題如果不用這種方式的話,就要通過堆這種數據結構來做
但是用上述方法十分利于新手
6.重新定義大小
void resize(size_type n);
void resize(size_type n, const value_type& val);
//參數說明
/?/n?:新的容器大小(元素數量)
/?/val?:當需要新增元素時,用于初始化新元素的值(可選參數)
?7.”發展前景“廣闊
在其他stl函數里,一般參數都是迭代器。比如upper_bound(),lower_bound(),sort()數組固然是可以銜接的,但是畢竟vector訪問本身就用的迭代器。二者搭配使用更佳