1

私はプログラミングの仕事に行き詰まりました。stl ベクトルの要素を

MPI_Send() ルーチンで送信するための連続したメモリ。

以下に例を示します。

class Tem
{

//...
private: 
 vector<double> lenghtVector (4500);//this gives a compilation error but I need to have a fixed sized vector

};

シリアル メモリを持つベクトルを取得するにはどうすればよいですか?

ありがとう。よろしくお願いいたします。

SRec

4

2 に答える 2

2

ベクトルの要素は、C++ 標準 (23.2.4/1) に従って連続して格納されます。Temサイズを変更するには、クラスの初期化子リストで適切なコンストラクターを使用できます。

class Tem
{
  Tem() : lenghtVector(4500) {};
private: 
 vector<double> lenghtVector;
};
于 2010-03-01T11:37:28.140 に答える
1

vector は、データが連続していることが保証されているため、必要なことを行います。&(v[0]) を使用して、MPI_Send() に渡すことができるポインターを取得します。

ベクトルの動的なサイズ変更が必要ない場合は、Boost Arrayクラスを参照してください。サイズはコンパイル時に固定されますが、STL 互換のコンテナーなので、begin()、end()、size() などを取得します。

于 2010-03-01T14:10:28.010 に答える