我正在尝试对我的班级和 std::vector 做一些工作。我遇到了以下问题,=
这是我的代码:
class A
{
private:
........
public:
vector<int>* ret_vec();
};
vector<int>* A::ret_vec()
{
vector<int> vec; // vec is declared as a local variable
......
return &vec;
}
int main()
{
.....
vector<int>* vec = A.ret_vec(); // size of vec is 0 !!!
}
正如你在代码中看到的,vec
invector<int>* A::ret_vec()
被声明为一个局部变量,当我将它分配给一个指针 in 时main
,它的大小vec
是 0。
因此,我改用以下方法:
class A
{
private:
vector<int> vec; // vec is declared as a member variable
public:
vector<int>* ret_vec();
};
vector<int>* A::ret_vec()
{
......
return &vec;
}
int main()
{
.....
vector<int>* vec = A.ret_vec(); // size of vec is ok
}
现在,当我声明vec
为成员变量时,当我将它分配给 in 的本地指针时main
,它的大小完全符合我的预期。
我可以知道这是为什么吗?非常感谢。
==================================================== ======== 编辑:
对不起,我一开始没有清楚地解释自己。我正在处理一个大型数据集vec
,时间性能是我当前的首要任务。因此,恐怕按值返回向量不是一种选择。