vector 基本使用
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void myPrintf(vector<int>& v, string s){
cout << "=========" << s << "=========" << endl;
cout << "capacity:" << v.capacity() << " ";
cout << "size:" << v.size() << " ";
for(int i =0; i < v.size(); ++i){
cout << v[i] << ",";
}
cout << endl;
}
int main(){
// vector 构造、初始化
vector<int> a1;
myPrintf(a1, "a1");
// capacity:0 size:0
vector<int> a2(3);
myPrintf(a2, "a2");
// capacity:3 size:3 0,0,0,
vector<int> a3(3, 9);
myPrintf(a3, "a3");
// capacity:3 size:3 9,9,9,
// vector 大小变换
vector<int> a4(3, 9);
a4.resize(2); // 更改vect.size的大小,多删
myPrintf(a4, "a4.1");
// capacity:3 size:2 9,9,
a4.resize(4); // 更改vect.size的大小,少增
myPrintf(a4, "a4.2");
// capacity:4 size:4 9,9,0,0,
vector<int> a5(3, 9);
a5.resize(2, 5); // 更改vect.size的大小,多删,5不起作用
myPrintf(a5, "a5.1");
// capacity:3 size:2 9,9,
a5.resize(4, 5); // 更改vect.size的大小,少增,用 5 来初始化新增值
myPrintf(a5, "a5.2");
// capacity:4 size:4 9,9,5,5,
// vector 增加、删除元素
vector<int> a6(3, 9);
myPrintf(a6, "a6.1");
// capacity:3 size:3 9,9,9,
a6.pop_back(); // 删除a6向量的最后一个元素,capacity不变,size大小减1
myPrintf(a6, "a6.1");
// capacity:3 size:2 9,9,
a6.push_back(5); // capacity会由3变成6,当原vector容量不足时,vector会double开辟内存
myPrintf(a6, "a6.2");
// capacity:3 size:3 9,9,5,
// vector 利用数组构造、初始化
int b[4]={1,2,3,4};
vector<int> a7(b,b+3); // 利用数组来初始化vector, 必须填写数组范围!!!
myPrintf(a7, "a7");
// capacity:3 size:3 1,2,3,
vector<int> a8(a7.begin(), a7.begin()+2);
myPrintf(a8, "a8");
// capacity:2 size:2 1,2,
// vector 使用、修改元素
int bb[4]={1,2,3,4};
vector<int> a9(bb,bb+3);
myPrintf(a9, "a9.1");
// capacity:3 size:3 1,2,3,
cout << "a9.front():" << a9.front() << endl;
// a9.front():1
cout << "a9.back():" << a9.back() << endl;
// a9.back():3
a9.erase(a9.begin()+2, a9.end()); // 起始-结束,删除满足条件元素
myPrintf(a9, "a9.2");
// capacity:3 size:2 1,2,
myPrintf(a9, "a9.3");
a9.insert(a9.begin()+1,77); // 在固定位置插入7
myPrintf(a9, "a9.3");
// capacity:3 size:3 1,7,2,
a9.clear();
myPrintf(a9, "a9.4");
// capacity:3 size:0
cout << "a9.empty():" << a9.empty() << endl; // empty()判断的是size大小
// a9.empty():1
// a9[100]=5; // []不可以创建元素,运行时会报错!!!
// vector 使用迭代器
int c[4]={1,2,3,4};
vector<int> a10(c,c+4);
for(vector<int>::iterator it=a10.begin();it!=a10.end();it++)
cout << *it << ",";
// 1,2,3,4,
cout << endl;
// vector 使用sort排序
int cc[4]={3,2,1,4};
vector<int> a11(cc,cc+4);
sort(a11.begin(),a11.end()); //对a10中的从a.begin()(包括它)到a.end()(不包括它)的元素进行从小到大排列
myPrintf(a11, "a11.1");
// capacity:4 size:4 1,2,3,4,
reverse(a11.begin(),a11.end());
myPrintf(a11, "a11.2");
// capacity:4 size:4 4,3,2,1,
// vector algorithm用法
int d[4]={3,2,1,4};
vector<int> a12(d,d+4);
vector<int>::iterator iter = find(a12.begin(), a12.end(), 1);
//在a中的从a12.begin()(包括它)到a12.end()(不包括它)的元素中查找1,若存在返回其在向量中的位置
if(iter != a12.end()) cout << "find:" << *iter << endl;
return 1;
}