1

私は私のC ++コードに持っています:

  typedef vector<int> cards;
  typedef vector<cards> rows;
  typedef vector<rows> matriz;

私のint main()では、この行で「cartas」と呼ばれるマトリズを初期化しようとしています。

  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が、各位置には整数のベクトルがあります。

ありがとうございます。

4

2 に答える 2

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)));
于 2012-05-27T17:42:18.203 に答える
0

サイズ n*m vector[] の配列を設定しないのはなぜですか。各行をインデックス % n として、列をインデックス % m として取得できます。はるかにシンプルでクリーン。

于 2012-05-27T17:41:09.573 に答える