C++ 从变量(C+;+;)初始化数组

C++ 从变量(C+;+;)初始化数组,c++,multidimensional-array,functional-programming,initialization,C++,Multidimensional Array,Functional Programming,Initialization,我目前正在做一个编程项目,我在编译时遇到了一个问题。。。我用C++编写了以下代码: scanf("%d %d", &number, &shares); vector<int> graph[number]; scanf(“%d%d”、&number和shares); 向量图[数]; 我读取变量号,并使用它初始化数组的大小。但这会产生初始化问题 非POD元素类型的可变长度数组vector 有人知道我能做些什么来解决这个问题吗?您正试图定义一个向量数组,但数组的大小不能

我目前正在做一个编程项目,我在编译时遇到了一个问题。。。我用C++编写了以下代码:

scanf("%d %d", &number, &shares);
vector<int> graph[number];
scanf(“%d%d”、&number和shares);
向量图[数];
我读取变量号,并使用它初始化数组的大小。但这会产生初始化问题

非POD元素类型的可变长度数组
vector


有人知道我能做些什么来解决这个问题吗?

您正试图定义一个向量数组,但数组的大小不能由运行时确定。假设您想声明某种类型的向量,您可以这样做:

vector<int> graph(number); // vector of size = number
矢量图(数字);//大小向量=数量
编辑:在你的评论之后,你想要的似乎是一个向量向量:

vector<vector<int>> graph(number);
矢量图(数字);

您试图创建一个向量数组,如果不通过动态分配来实现这一点,这不是一件好事。如果需要向量数组,请执行以下操作:

vector<int> * graph = new vector<int>[number];
...
delete[] graph;
vector*graph=新向量[数字];
...
删除[]图;
如果要获得大小为number的向量,请执行以下操作:

vector<int> graph(number);
矢量图(数字);

检查这些相关帖子,因为它们与您的问题相同:


谢谢,这是您第一次输入!我必须实现Tarjan的算法,并存储图形,我的意思是使用从输入读取的多个节点,然后在每个位置的向量中存储每个节点的所有传出连接。我只是想以这种方式使用多维数组,因为我可以在从输入读取的特定数量的节点中初始化数组!尽管如此,我还是会马上试试这个!非常感谢。而不是这个,做矢量图(数字);实际上,我的意思是做一个向量数组,存储来自特定节点的传出连接的值,在Tarjan的算法上使用SCC的。。。但是非常感谢你的帮助@FranciscoTSilva好的,也许你需要一个向量的向量。见编辑,谢谢。你知道有哪本指南可以让我看到如何操作这样定义的结构的例子吗?