C++ c++;在类中初始化变量以使用mpi发送

C++ c++;在类中初始化变量以使用mpi发送,c++,mpi,C++,Mpi,我被困在一个编程任务中。我想把stl向量的元素放在 使用MPI_send()例程发送的连续内存 以下是一个例子: class Tem { //... private: vector<double> lenghtVector (4500);//this gives a compilation error but I need to have a fixed sized vector }; Tem类 { //... 私人: vector lenghtVector(4500);/

我被困在一个编程任务中。我想把stl向量的元素放在

使用MPI_send()例程发送的连续内存

以下是一个例子:

class Tem
{

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

};
Tem类
{
//...
私人:
vector lenghtVector(4500);//这会导致编译错误,但我需要一个固定大小的向量
};
我怎么能有一个串行内存为的向量呢?我应该做些别的事情吗

谢谢。 最亲切的问候


<> SRec < /P> < P>元素按照C++标准(23.2.4/1)连续存储。要调整其大小,可以在
Tem
类的初始值设定项列表中使用适当的构造函数:

class Tem
{
  Tem() : lenghtVector(4500) {};
private: 
 vector<double> lenghtVector;
};
Tem类
{
Tem():lenghtVector(4500){};
私人:
向量长度向量;
};

矢量将执行您想要的操作,因为数据保证是连续的。使用&(v[0])获取可以传递到MPI_Send()的指针


如果您不需要动态调整vector的大小,您可能需要查看该类。编译时大小是固定的,但它是与STL兼容的容器,因此您可以使用begin()、end()、size()等。

谢谢Krill,我可以声明以下内容吗?如果我不超过向量的初始长度,我可以保证元素保持连续。这是真的吗?矢量的重新选择始终连续存储。使用
resize
std::vector
的任何其他功能都不会更改此规则。无需更改(问题在回答时已更改)