【发布时间】:2013-08-08 18:04:27
【问题描述】:
全部
我正在使用 2D 向量将结果从函数返回到 main。二维向量非常大,函数执行了10K+次,所以我必须用指针返回它来加速它。
这是我的代码:
vector<vector<double>>* someFunction()
{
vector<vector<double>> results;
//do something...
return &results;
}
主要是:
int main()
{
// do something
////////// EDIT: vec is a pointer, I missed * at first place
vector<vector<double>>* vec = someFunction(); // vec is empty!
cout<<vec.size(); // size = 0
return;
}
当我在main中查看vec的值和大小时,发现vec的大小是0。
我可以知道我错了吗?
非常感谢。
问候
长
【问题讨论】:
-
1.它编译吗? 2. RVO 可能会删除副本,所以你可以按值返回
-
@Andrew 是的,它可以编译,但是当执行它时,由于我需要将结果写入文件,它会触发一些断点。
-
永远不要返回指向局部变量的指针!
-
在 C++11 中,您可以为此使用移动语义!
-
可以给函数添加引用参数
标签: c++ pointers vector return