vector 的 push_back[转]
来源:互联网 发布:stm32图像处理算法 编辑:程序博客网 时间:2024/06/05 13:54
vector是用数组实现的,每次执行push_back操作,相当于底层的数组实现要重新分配大小(即先free掉原存储,后重新malloc);这种实现体现到vector实现就是每当push_back一个元素,都要重新分配一个大一个元素的存储,然后将原来的元素拷贝到新的存储,之后在拷贝push_back的元素,最后要析构原有的vector并释放原有的内存。
例如:
当主函数只有一个push_back时:
int main()
{
vector
HP a;
sb.push_back(a);
while(1);
}
由于原来的vector为空,所以只是分配新的空间,然后拷贝push_back的元素。所以结果如下:
gouzao //这是 语句 HP a; 构造a产生
kaobei //这是 语句 sb.push_back(a) 拷贝新元素产生的。
当主函数有两个push_back时:
int main()
{
vector
HP a;
sb.push_back(a);
sb.push_back(a);
while(1);
}
注意执行第二个push_back时,首先另外分配两个元素的空间,并将原来的vector元素拷过来,后拷贝新push的元素,最后析构原来的元素。故结果如下 :
gouzao //这是 语句 HP a; 构造a产生
kaobei //这是 第一个sb.push_back(a) 拷贝新元素产生的。
kaobei //下面这两个是由第二个sb.push_back(a)产生的,它先先将原来的vector元素拷过来,后拷贝新push的元素
kaobei
xigou //只是析构原来的vector元素产生的。
当主函数有三个push_back时:一样分析,
int main()
{
vector
HP a;//构造
sb.push_back(a); //一个拷贝
sb.push_back(a);//两个拷贝,一个析构
sb.push_back(a);//三个拷贝,两个析构
while(1);
}
结果如下:
gouzao
kaobei
kaobei
kaobei
xigou
kaobei
kaobei
kaobei
xigou
xigou
- vector 的 push_back[转]
- vector的push_back
- C++ vector的push_back
- vector的push_back
- vector中push_back的复杂度
- vector push_back
- vector::push_back
- vector的push_back()函数的赋值方式
- vector:push_back时的对象构造
- Vector push_back和迭代器iterator的冲突
- 请教一个vector的push_back问题
- vector和dequeue的push_back比较
- vector调用push_back() 内存泄露的风险
- [C++]vector 的 push_back实现原理
- vector::push_back函数解析
- 关于 vector push_back 实现
- vector中的push_back()学习
- vector::push_back() demo
- Java的多进程运行模式分析
- 从B树、B+树、B*树谈到R 树
- 自己写的GDI+ 图片文字按钮 ButtonIT
- 功能完善的即时通讯+视频会议源码
- 第一篇 无题
- vector 的 push_back[转]
- java.lang.OutOfMemoryError: Java heap space 的解决方法
- MFC的CWnd和HWND之间互相转换方法
- MFC的CWnd和HWND之间互相转换方法
- 实例详解SQL Server 2005 分区模板
- 用户体验 资料
- conky配置
- 一个在UTF32、UTF-16、UTF-8中相互转换的C++程序
- 记录一下jar包运行