为什么
各方面表现都比较中等, 适用范围广
尾插很快, 查找也比较快
是什么
动态数组

特点:
- 动态数组, 三个指针控制
- 两倍增长
- 扩充的方法: 不能原地扩充, 因为后面可能会有其他的东西, 必须在 其他地方开辟一块更大的内存
- 提供[]
- iterator是class类型的
怎么样
制造
- 两倍增长
- //push_back() 检查剩余的空间
- //有, 继续增长
- //没有,计算
- //开始是不是0
- //是0 放1个
- //不是0 分配两倍的空间
- //将原来内容拷贝到新的vector (拷贝构造)
- //原来的要删掉(析构)
- //插进最新push_back的元素
复制代码 使用
<ol>初始化- //重载
- vector<int>vec = {1,2,3};
- //拷贝
- vector<int>vec1(vec);
- vector<int>vec2(100,5); //100个5
- vector<int>vec3(100) //100个0
- //直接添加元素
- vector<int>vec{1,2,3};
- //复制数组
- int i[5] = {1,2,3,4,5};
- vector<int>vec(i,i+5);
复制代码 状态查看(主要是容量)- //返回元素个数
- vec.size();
- //返回扩容后最多能容纳的元素个数
- vec.max_size();
- //返回分配的容量
- vec.capacity();
- //是否为空, 为空就返回true
- vec.empty();
复制代码 改变capacity与size
[code]//容量设为100vec.reserve(100);//如果capacity |