C++中STL的vector容器的析构函数怎么用?

#include<iostream>#include<vector>usingnamespacestd;intmain(){intlen;cin>>len;vector<... #include <iostream>
#include <vector>
using namespace std;
int main()
{
int len;
cin>>len;
vector<char> array1(len);

for(int i=0;i<len;i++)
{
array1[i]=i+65;
cout<<array1[i]<<"\t";
}
~vector();
return 0;
}

代码提示错误: error C2955: “std::vector”: 使用类 模板 需要 模板 参数列表
展开
 我来答
hwd0312
推荐于2016-10-20 · TA获得超过4336个赞
知道小有建树答主
回答量:1043
采纳率:100%
帮助的人:163万
展开全部

C++中STL的vector容器的析构函数不用自己调用,系统会进行析构,但是vector内元素的清空需要手动进行。

  1. 非指针的数据类型,比如 int、string、char ,还包括自定义的数据结构、自定义的类 等等只需要手动调用vector的clesr函数就可以了,空间的释放和析构系统都会自动进行。

  2.  指针类型的数据,这种情况需要手动进行释放。也就是说new 产生的内存需要手动使用free进行释放。

yujie_fudan
2010-10-27 · TA获得超过469个赞
知道小有建树答主
回答量:216
采纳率:0%
帮助的人:318万
展开全部
析构函数不需要直接调用。而是在对象失效时自动调用的。所谓对象失效,是指程序已经运行出局部变量的作用域或者是对对象指针进行delete时。
比如
void foo()
{
vector<int> array;
vector<int> *ptr;
ptr = new vector<int>() //这里调用构造函数来创建对象。
// do something
delete ptr; //这里调用析构函数来销毁对象。
} //当此函数运行结束时,自动调用array的析构函数~vector()。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
清影星河6A
2010-10-28 · TA获得超过851个赞
知道小有建树答主
回答量:753
采纳率:0%
帮助的人:888万
展开全部
提供你一个办法:
在文件 <vector>
中,下一个断点
~vector()
{
}

看看会不会运行到,这样,你就知道,你不必自己调用 ~vector(),系统会做的。
我的机器上,是第 386 行。

试试看
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
calrincalrin
2010-11-06 · 超过25用户采纳过TA的回答
知道答主
回答量:90
采纳率:0%
帮助的人:79.7万
展开全部
这里不需要手动释放,如楼上几位所说。我说说析构函数调用的时机吧!
内存管理应该明白吧!
这里你的vector是在栈上的,所以main函数执行完后,会自动对栈进行回收,对栈进行回收时,会自动调用vector对象的析构函数,因此不需要显式调用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kunlun00100
2010-10-26 · TA获得超过109个赞
知道答主
回答量:129
采纳率:0%
帮助的人:100万
展开全部
~vector();不需要你调用,调用会出错,程序会自动调用的,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式