vector清空的问题
时间:2011-12-20
来源:互联网
#include <iostream>
using namespace std;
void main()
{
int i = 0;
vector<int> v;
cout<<v.size()<<endl;
cout<<v.empty()<<endl;
for( i = 0; i < 10; i++ )
{
v.push_back( i+1 );//把元素一个一个存入到vector中
}
v.clear();
cout<<v.size()<<endl;
cout<<v.empty()<<endl;
cout<<v[4]<<endl;
}
为什么调用了v.clear()函数清空v后,v[4]的输出还是5?
怎么样才能将v中的内容完全删除?如果不删除的话那对下一次v的使用会不会产生影响?
作者: wkq87 发布时间: 2011-12-20
作者: yisikaipu 发布时间: 2011-12-20
你试试用v.at(4)看看报错不报错
作者: akirya 发布时间: 2011-12-20
秀逗了,这个等价于v.clear();
作者: yisikaipu 发布时间: 2011-12-20
另外,你size();一下就会发现大小已经为0,这说明已经清空
作者: qscool1987 发布时间: 2011-12-20
如果你觉得害怕,有一种方法就是调用v.clear()后,将V的大小置为0,但是C++标准并不支持,毕竟那片内存没有被处理掉。 所以如果要处理掉那片内存,可以采用以下方法:
v.swap(vector<int>());
该语句的思路是先构造一个临时的空向量,然后将V与该空向量对调,这样V就空了,在该语句结束时,临时向量对象将会被销毁,所以V之前的那部分内存也就被释放了。(参考STL中文版)
作者: quhangprogram 发布时间: 2011-12-20
作者: herocxgood 发布时间: 2011-12-20
作者: lixinjie241 发布时间: 2011-12-20
LZ的代码我放到vs2010运行出错,cout<<v[4]<<endl;报错
仅能对确知已存在的元素进行下标操作。
作者: ycguhang 发布时间: 2011-12-20
怎么能快速获取 Vector 容器里面 最后那个值?
作者: ycguhang 发布时间: 2011-12-20
作者: mingliang1212 发布时间: 2011-12-20
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28