首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++中Vector的基础有关问题,求解答

2012-08-08 
C++中Vector的基础问题,求解答我在一个类里定义了一个class Pit{public:vectorint* vecPit()}构造函

C++中Vector的基础问题,求解答
我在一个类里定义了一个
class Pit
{
public:
vector<int*> vec;
Pit();
};
构造函数
Pit::Pit()
{
int temp[10] = {1,2,3,4,5,6,7,8,9,10};
vec.push_back(temp);
cout<<vec[0][0]<<endl;
};

main函数里
int main()
{
Pit pit ;
cout<<pit.vec[0][0]<<endl;
}

构造函数里打印出来1是没问题的,但为什么我在main函数里打印的结果是-858993460

[解决办法]
构造函数
Pit::Pit()
{
int temp[10] = {1,2,3,4,5,6,7,8,9,10};//局部数组
vec.push_back(temp);//将该局部数组的首元素地址放入vec中
cout<<vec[0][0]<<endl;//输出vec的首元素所指向的内存空间的首元素
};//构造函数结束,收回函数内定义的所有局部变量
main函数里
int main()
{
Pit pit ;
cout<<pit.vec[0][0]<<endl;//输出vec的首元素所指向的内存空间的首元素
//很不幸,那个内存空间只在被定义的函数内有效,已经被系统自动回收了
}
[解决办法]
Pit pit ;
调用完构造函数后,pit.vec 里保存的是一个局部指针。构造函数返回,int temp[10]也就销毁了
[解决办法]
楼上讲得已经很清楚了,<int*>就意味着vec中添加的数据应该是堆上的,也就是new出来的

热点排行