我有一个创建二维 vector 的函数
void generate(int n)
{
vector< vector<int> > V (n, vector<int>(1 << n , 0 ));
.......
}//n is used to determine the size of vector
现在,我需要返回创建的 vector 以在另一个函数中使用它。如果我这样做了
return V ;
这是错误的,因为 V 是一个局部变量,但我不能在函数外定义 V,因为这个函数定义了 V 的大小。我该怎么办?
最佳答案
您可以毫无问题地返回 V
- 它将返回局部变量的拷贝。仅当您将引用 或指针 返回给具有局部作用域的变量时才会出现问题;当函数结束时,局部变量超出范围并被销毁,引用/指针不再有效。
或者,您可以接受一个 vector 的引用作为您的参数,写入它并返回 void:
void generate(int n, std::vector< std::vector<int> >& vec) {
vec.resize(n, std::vector<int>(1 << n, 0));
}
int main() {
std::vector< std::vector<int> > v;
generate(10, v);
}
这比返回本地成员的拷贝更快,后者对于大型对象(例如多维 vector )来说可能代价高昂。
关于c++ - 如何返回二维 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3566264/