stl中vector的容量变换问题
来源:互联网 发布:空姐外围女 知乎 编辑:程序博客网 时间:2024/05/15 21:27
一道面试题:
对stl中的vector先插入100个元素,再删除这100个元素,该vector的容量如何变化。
汗,当时没答上来,不知道删除元素时会不会回收空间,还是掌握的不扎实啊。
编写如下程序:
int main()
{
vector<int> vec;
cout << "Original capacity" << vec.capacity() << endl;
int i;
int cap = vec.capacity();
for (i = 0; i < 100; ++i)
{
vec.push_back(i);
if (vec.capacity() != cap)
{
cout << "capacity changed to " << vec.capacity() << "at " << i << endl;
cap = vec.capacity();
}
}
vector<int>::iterator iter = vec.begin();
while (iter != vec.end())
{
vec.erase(iter);
iter = vec.begin();
}
cout << vec.size() << endl;
cout << vec.capacity() << endl;
}
输出结果为:
Original capacity0
capacity changed to 1at 0
capacity changed to 2at 1
capacity changed to 4at 2
capacity changed to 8at 4
capacity changed to 16at 8
capacity changed to 32at 16
capacity changed to 64at 32
capacity changed to 128at 64
0
128
从结果可以得出结果:
1. vector初始大小为0, 容量以2倍大小增加
2. 删除元素时,并不回收空间。符合《the c++ standard library》中所说:vector容量不会缩减。
- stl中vector的容量变换问题
- STL: string和vector的容量变化
- STL中Vector的内存释放问题
- STL 中vector的erase问题
- 关于vector的容量增长问题
- 关于vector的容量增长问题
- 修剪vector中过剩容量的方法
- STL中vector值得注意的两个问题
- STL中vector值得注意的两个问题
- C++中STL Vector相关的两个问题
- STL中vector的resize和reserve问题(转载)
- 关于STL中vector使用unique()去重的问题
- 关于STL容器中vector特定元素的删除问题
- 关于STL中vector使用unique()去重的问题
- STL中vector的实现及面试问题
- STL中vector的总结
- STL中vector的用法
- STL中vector的实现
- gdb+gdbserver远程串行协议
- 混色 牛 2
- .c和.h文件的区别(头文件与之实现文件的的关系~ )
- TCP协议---服务器与客户端状态转换图
- android2.3设备有多个Camera设置
- stl中vector的容量变换问题
- 第二章 4 HTML 5 Web 存储
- vc摄像头笔记
- MOSS创建自定义WebService服务
- xen块设备体系结构 - tapdisk2 (1)
- 第二章 5 HTML5 Input 类型
- @property详解
- Multi tasking in Windows Phone 7.1
- 转换