c++ - 如何返回二维 vector ?

标签 c++ vector

我有一个创建二维 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/

相关文章:

c++ - 计算不同类别的对象数量

java - 尽管行数超过 1,但 JTable 仅显示 1 行

c++ - 在中间插入一个元素到 vector 中

list - 在 Haskell 中表示 2D 矢量的正确方法是什么?

c++ - 我在为 vector 编写 getter 时遇到问题

c++ - 这种情况下合适的设计模式是什么?

C++ Aware 复制插入到 std::map

java - 如何制作一个可以渲染的简单窗口?

c++ - STL中范围解析运算符的使用困惑

c++ - 为什么我无法使用 Code::Blocks C++ 读取文件?