我的c ++代码:
typedef vector<int> cards;
typedef vector<cards> rows;
typedef vector<rows> matriz;
在我的int main()
中,我尝试初始化名为&#34; cartas&#34;的matriz。用这条线;
63 cin>>n>>m;
66 cartas(n,rows(m, cards(0)));
但是,使用g ++,可以得出这个错误:
flip.cpp: In function ‘int main()’:
flip.cpp:66: error: no match for call to ‘(matriz) (int&, rows)’
我想取一个n*m
的matriz,在每个位置都有整数向量。
谢谢,现在,我不知道如何。
答案 0 :(得分:4)
您的代码是否有任何机会类似于:
int n, m;
matriz cartas;
cin>>n>>m;
cartas(n,rows(m, cards(0)));
这不起作用,matriz cartas;
已经是初始化。在cartaz
语句后定义cin
,或在之后分配。
最优:
int n, m;
cin>>n>>m;
matriz cartas(n,rows(m, cards(0)));
替代:
int n, m;
matriz cartas;
cin>>n>>m;
cartas = matriz(n,rows(m, cards(0)));
答案 1 :(得分:0)
为什么不设置一个大小为n * m vector []的数组。 您可以将每行作为索引%n和列作为索引%m。 更简单,更清洁。