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”: 使用类 模板 需要 模板 参数列表 展开
#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”: 使用类 模板 需要 模板 参数列表 展开
5个回答
展开全部
析构函数不需要直接调用。而是在对象失效时自动调用的。所谓对象失效,是指程序已经运行出局部变量的作用域或者是对对象指针进行delete时。
比如
void foo()
{
vector<int> array;
vector<int> *ptr;
ptr = new vector<int>() //这里调用构造函数来创建对象。
// do something
delete ptr; //这里调用析构函数来销毁对象。
} //当此函数运行结束时,自动调用array的析构函数~vector()。
比如
void foo()
{
vector<int> array;
vector<int> *ptr;
ptr = new vector<int>() //这里调用构造函数来创建对象。
// do something
delete ptr; //这里调用析构函数来销毁对象。
} //当此函数运行结束时,自动调用array的析构函数~vector()。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
提供你一个办法:
在文件 <vector>
中,下一个断点
~vector()
{
}
看看会不会运行到,这样,你就知道,你不必自己调用 ~vector(),系统会做的。
我的机器上,是第 386 行。
试试看
在文件 <vector>
中,下一个断点
~vector()
{
}
看看会不会运行到,这样,你就知道,你不必自己调用 ~vector(),系统会做的。
我的机器上,是第 386 行。
试试看
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这里不需要手动释放,如楼上几位所说。我说说析构函数调用的时机吧!
内存管理应该明白吧!
这里你的vector是在栈上的,所以main函数执行完后,会自动对栈进行回收,对栈进行回收时,会自动调用vector对象的析构函数,因此不需要显式调用。
内存管理应该明白吧!
这里你的vector是在栈上的,所以main函数执行完后,会自动对栈进行回收,对栈进行回收时,会自动调用vector对象的析构函数,因此不需要显式调用。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
~vector();不需要你调用,调用会出错,程序会自动调用的,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询