关于vector的一些实用注意
来源:互联网 发布:群智能算法 编辑:程序博客网 时间:2024/04/28 01:33
最重要的有两点:vector是拷贝push_back输入的一份副本,需要注意你所需要的究竟是一个指针一个引用还是一个新的对象?vector的内存重新分配问题,考虑如下代码:
int* p = NULL;
vector<int*> a;
vector<int> b;
for(int i = 0;i < 11;i++){
b.push_back(i);
a.push_back(&b.at(i));
}
for(int i = 0;i < 11;i++){
cout<<*(a.at(i))<<endl;
}
运行会是什么结果呢?在dubug中前面大部分值是随机数,那么这是为什么呢?这就涉及到vector的内存分配问题了,由于vector是一种线性容器,要求分配内存中的一片连续空间,当当前分配的内存用完的时候,vector就会自动分配一块更大的空间,并将原来的空间释放,那么问题就出来了,向量a里面的指针并没有跟着变化而指向原来的位置,原来的位置上肯定没有现在的值,那自然会使一些不清楚的值咯,解决方法之一就是先用reserve固定b的大小,方法二就是先将向量a放好,在确定向量b如下代码:
int* p = NULL;
vector<int*> a;
vector<int> b;
for(int i = 0;i < 11;i++){
b.push_back(i);
a.push_back(&b.at(i));
}
for(int i = 0;i < 11;i++){
int* p = NULL;
vector<int*> a;
vector<int> b;
for(int i = 0;i < 11;i++){
b.push_back(i);
}
for(int i = 0;i < 11;i++){
a.push_back(&b.at(i));
}
- 关于vector的一些实用注意
- vector使用需要注意的一些问题
- JAVA中关于Vector的一些事
- 关于vector的一些问题(5.11)
- 关于vector<>的一些使用记录
- javascript 一些实用的函数和建议以及注意
- 关于PopupWindow的一些注意的地方
- 关于vector的resize函数调用注意点
- 关于学习DWR的一些注意要点
- 关于AjaxPro的一些注意点
- 关于UIWebview的一些注意点
- 关于java编程的一些注意点
- 关于Django QuerySet的一些注意点
- 关于C++引用的一些注意点
- 关于GIT的一些注意点
- 关于C++引用的一些注意点
- 关于 UITapGestureRecognizer 一些注意的地方
- 关于Tomcat服务器的一些注意问题
- 驱动开发中函数内存分配
- ALSA asoundrc官方文档
- c语言编程练习题及答案
- 管理员必备的20个Linux系统监控工具
- 记录的一天
- 关于vector的一些实用注意
- “手把手教你学linux驱动开发”OK6410系列之01---模块编程
- Vim实用配置与命令
- 网络仪表铺路 智能家居起航
- “手把手教你学linux驱动开发”OK6410系列之02---虚拟字符设备
- 【OpenStack】在OpenStack使用XenServer资源池浅析
- 退格键变成^H的问题
- 关于mac x lion安装xcode出现错误的问题
- dojo.Deferred 管理回调函数