инициализация переменной c ++ в классе для отправки его с помощью mpi - PullRequest
1 голос
/ 01 марта 2010

Я застрял в задаче программирования. Я хочу, чтобы элементы моего вектора 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

Ответы [ 2 ]

2 голосов
/ 01 марта 2010

Элементы вектора хранятся непрерывно в соответствии со стандартом C ++ (23.2.4 / 1). Чтобы изменить его размер, вы можете использовать соответствующий конструктор в списке инициализаторов Tem class.:

class Tem
{
  Tem() : lenghtVector(4500) {};
private: 
 vector<double> lenghtVector;
};
1 голос
/ 01 марта 2010

вектор будет делать то, что вы хотите, так как данные гарантированно будут смежными. Используйте & (v [0]), чтобы получить указатель, который вы можете передать MPI_Send ().

Если вам не нужен динамический размер вектора, вы можете взглянуть на класс Boost Array . Размер фиксируется во время компиляции, но это STL-совместимый контейнер, поэтому вы получаете begin (), end (), size () и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...