本文从以下几个方面介绍vector用法
1,初始化
-
定义空的vector vector<T>v1 T为数据类型 此时向v1中添加元素不能直接使用下标,要用pushback insert
-
定义固定长度的vector vector<T>v2(n) 此时向v2中插入数据可以用下标
-
定义一个vector的副本 vector<T>v3(v2)
-
定义固定长度的vector vector<T>v4(n,i) 长度为n且元素都为i
-
从另一个vector或数组赋值 vector<T>v5(v2.begin(),v2.begin()+5)
2,基本操作
- 插入操作 尾部插入 v.pushback(i) 自定义位置 v. v.insert(v.begin(),i) 是在begin()前插入
- 删除操作 v.erase(p) v.popback() v.clear()
- 遍历操作 利用下标v[1] 利用迭代器
-
vector<int>::iterator it;
-
for (it = v.begin(); it != v.end(); it ++) cout<<*it;
-
v.front() v.back() 返回第一个元素,最后一个元素
-
v.empty()
-
a.capacity(); //返回a在内存中总共可以容纳的元素个数
a.resize(10); //将a的现有元素个数调至10个,多则删,少则补,其值随机
a.resize(10,2); //将a的现有元素个数调至10个,多则删,少则补,其值为2
a.reserve(100); //将a的容量(capacity)扩充至100,也就是说现在测试a.capacity();的时候返回值是100.这种操作只有在需要给a添加大量数据的时候才显得有意义,因为这将避免内存多次容量扩充操作(当a的容量不足时电脑会自动扩容,当然这必然降 -
返回vector类型的数据时
-
vector<int> divingBoard(int shorter, int longer, int k) {
return vector<int>();
return vector<int>(1,k*shorter);
vector<int>v(k+1);
for(int i=0;i<k+1;++i){
v[i]=(shorter*(k-i)+longer*i);
}
return v;
}