3

2D vectorC++ で a を作成し、そのlengthandを見つけるにはどうすればよいcoordinatesですか?

この場合、ベクトル要素はどのように値で埋められますか?

ありがとう。

4

3 に答える 3

5

行列計算を行うことが目的の場合は、Boost::uBLASを使用してください。このライブラリには多くの線形代数関数が含まれており、手動で作成するよりもはるかに高速です。

あなたがマゾヒストで、 に固執したい場合はstd::vector、次のようなことをする必要があります:

std::vector<std::vector<double> > matrix;
matrix.resize(10);
matrix[0].resize(20);
// etc
于 2011-01-30T19:07:41.907 に答える
3

いくつかのオプションがあります。最も単純なのはプリミティブな 2 次元配列です。

int *mat = new int[width * height];

特定の値を入力するには、次を使用できますstd::fill()

std::fill(mat, mat + width * height, 42);

任意の値で埋めるには、std::generate()またはを使用しstd::generate_n()ます。

int fn() { return std::rand(); }

// ...
std::generate(mat, mat + width * height, fn);

使い終わったら、配列を覚えておくdelete必要があります。

delete[] mat;

したがって、配列をクラスでラップすることをお勧めします。これにより、作成するたびに配列を削除することを覚えておく必要がなくなります。

struct matrix {
    matrix(int w, int h);
    matrix(const matrix& m);
    matrix& operator=(const matrix& m);
    void swap(const matrix& m);
    ~matrix();
};

// ...
matrix mat(width, height);

しかし、もちろん、誰かがすでにあなたのために仕事をしています。をご覧くださいboost::multi_array

于 2011-01-30T19:18:51.273 に答える
1

(S)彼は物理学のようにベクトルを望んでいます。

演習として自分で転がしてください。

class Vector2d
{
  public:
    // basic math (length: pythagorean theorem, coordinates: you are storing those)
  private: float x,y;
};

または、Vector2f が定義されている Eigen などのライブラリを使用します

于 2014-11-06T20:36:16.427 に答える