C++:在堆上分配一个大的可变大小的二维向量
C++ : Allocate a big variable-sized 2d-vector on the heap
(如果我的问题很蠢,那是因为我是学生)
在我的程序中,当我声明我的大向量时,我得到 "stack overflow"
cin >> big_number;
vector<int> my_vector[big_number];
** 堆栈溢出** ...
(注意:在上面的示例中,big_number 最多可以取 1.000.000 的值)
据我了解,发生这种情况是因为可变大小的向量被放置在堆栈上(而不是默认堆)。
我怎样才能把这个二维向量放到堆上?
将用户定义的向量放在堆上是“不好的做法”吗?
你应该使用vector<vector<int>>
代码看起来像
std::cin >> big_number;
std::vector<std::vector<int>> my_vector(big_number);
这将创建一个包含 big_number
个空 vector<int>
的 vector
(如果我的问题很蠢,那是因为我是学生)
在我的程序中,当我声明我的大向量时,我得到 "stack overflow"
cin >> big_number;
vector<int> my_vector[big_number];
** 堆栈溢出** ... (注意:在上面的示例中,big_number 最多可以取 1.000.000 的值)
据我了解,发生这种情况是因为可变大小的向量被放置在堆栈上(而不是默认堆)。
我怎样才能把这个二维向量放到堆上? 将用户定义的向量放在堆上是“不好的做法”吗?
你应该使用vector<vector<int>>
代码看起来像
std::cin >> big_number;
std::vector<std::vector<int>> my_vector(big_number);
这将创建一个包含 big_number
个空 vector<int>
vector