#include <iostream>
#include <vector>
using namespace std;
int main(){
vector<int> a({1, 2, 3});
// front函数返回vector的第一个元素,等价于*a.begin() 和 a[0]
// back函数返回vector的最后一个元素,等价于*a.end() 和a[a.size() - 1]
cout << a.front() << ' ' << a[0] << ' ' << *a.begin() << endl;
cout << a.back() << ' ' << a[a.size() - 1] << ' ' << *(a.end() - 1) << endl;
//这里注意end指最后一个元素的后一个位置
//vector还有两个特别重要的函数 叫做push_back()和pop_back()这里下划线bug了
a.push_back(4);//指的是往a的最后一个位置添加一个元素 时间复杂度是O(1)的
a.pop_back();//指删除最后一个元素
a.pop_back();//指删除最后一个元素
for(int x : a) cout << x << ' ';
cout << endl;
//vector 是如何实现动态增长空间的呢
//vector是基于一个叫做倍增的思想 开一个10不够11开一个20不够21开一个40然后把前面的赋值过来
//他的这个效率平均是普通数组的一半 因为他会多拷贝一遍数组 所以vector一般会比定义一个数组慢一些 大概慢一倍的样子
return 0;
}