1

私のプロジェクトでは、これらのファイルを持っています:

functions.h
functions.cc
main.cc

この方法で Matrix をポインタとして関数に渡そうとしています:

main.cc

// Size -> const short Size = 10;
int mtr1[Size][Size];
matrix_insert((int *)mtr1);

関数.h

void matrix_insert(int *mtr);

関数.cc

void matrix_insert(int *mtr) {
  short i, j;

  for (i = 0; i < Size; i++) {
    for (j = 0; j < Size; j++) {
      std::cin >> *(mtr + i * Size + j);
    }
  }
}

これは実際に機能していますが、私はこの方法が好きではありません...
もっと良い方法はありますか?

ありがとう!

編集:ベクトルで行列をエミュレートすることは可能ですか?

4

3 に答える 3

1

テンプレートを使用してこれを行うことができます。

template<int Size>
void matrix_insert(int (&mtr)[Size][Size])
{
    short i, j;

    for (i = 0; i < Size; i++)
    {
        for (j = 0; j < Size; j++)
        {
            std::cin >> mtr[i][j];
        }
    }
}
于 2012-11-03T18:02:16.890 に答える
1

本当に C 配列を使用したい場合は、次のようにします。

main.cc

int mtr1[Size][Size];
matrix_insert(mtr1);

関数.h

const short Size = 10;
void matrix_insert(int mtr[Size][Size]);

関数.cc

void matrix_insert(int mtr[Size][Size]) {
  short i, j;

  for (i = 0; i < Size; i++) {
    for (j = 0; j < Size; j++) {
      std::cin >> mtr[i][j];
    }
  }
}

作業バージョン: http://ideone.com/1ik7T9

于 2012-11-03T17:54:37.847 に答える
1

次のようなマトリックス クラスを作成します。

http://www.parashift.com/c++-faq/matrix-subscript-op.html

于 2012-11-03T17:59:05.753 に答える