C++:在堆上分配一个大的可变大小的二维向量。

问题描述 投票:0回答:2

(如果我的问题是愚蠢的,那是因为我是个学生)

在我的程序中,当我声明我的大向量时,我得到 "堆栈溢出"。

   cin >> big_number;
   vector<int> my_vector[big_number];

**堆栈溢出** ...(笔记在上面的例子中,big_number可以取值到1.000.000)

在我的理解中,这是因为可变大小的向量被放置在堆栈上(而不是默认的堆)。

我怎样才能把这个二维向量放在堆上?把用户定义的向量放在堆上是 "不好的做法 "吗?

c++ vector stack-overflow heap-memory dynamic-memory-allocation
2个回答
2
投票

你应该使用 vector<vector<int>>

代码会是这样的

std::cin >> big_number;
std::vector<std::vector<int>> my_vector(big_number);

这将创建一个 vector 含有 big_number 空的 vector<int>

© www.soinside.com 2019 - 2024. All rights reserved.