#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”: 使用类 模板 需要 模板 参数列表
C++中STL的vector容器的析构函数不用自己调用,系统会进行析构,但是vector内元素的清空需要手动进行。
温馨提示:答案为网友推荐,仅供参考
第1个回答 2010-10-27
析构函数不需要直接调用。而是在对象失效时自动调用的。所谓对象失效,是指程序已经运行出局部变量的作用域或者是对对象指针进行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()。
第2个回答 2010-10-28
提供你一个办法:
在文件 <vector>
中,下一个断点
~vector()
{
}
看看会不会运行到,这样,你就知道,你不必自己调用 ~vector(),系统会做的。
我的机器上,是第 386 行。
试试看本回答被提问者采纳
在文件 <vector>
中,下一个断点
~vector()
{
}
看看会不会运行到,这样,你就知道,你不必自己调用 ~vector(),系统会做的。
我的机器上,是第 386 行。
试试看本回答被提问者采纳
第3个回答 2010-11-06
这里不需要手动释放,如楼上几位所说。我说说析构函数调用的时机吧!
内存管理应该明白吧!
这里你的vector是在栈上的,所以main函数执行完后,会自动对栈进行回收,对栈进行回收时,会自动调用vector对象的析构函数,因此不需要显式调用。
内存管理应该明白吧!
这里你的vector是在栈上的,所以main函数执行完后,会自动对栈进行回收,对栈进行回收时,会自动调用vector对象的析构函数,因此不需要显式调用。
第4个回答 2010-10-26
~vector();不需要你调用,调用会出错,程序会自动调用的,