Cha*_*ame -1 c++ pointers vector
我正在尝试用我的类和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 !!!
}
Run Code Online (Sandbox Code Playgroud)
正如您在代码中看到的那样,vecin vector<int>* A::ret_vec()被声明为局部变量,当我将其指定为指针时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
}
Run Code Online (Sandbox Code Playgroud)
现在,vec当我将其声明为成员变量时,当我将其分配给本地指针时main,其大小完全符合我的预期.
我可以知道这是为什么吗?非常感谢.
================================================== ========编辑:
对不起,我没有在第一时间解释清楚.我正在处理大型数据集vec,时间性能是我当前的优先事项.因此,我担心按值返回向量不是一个选项.