【发布时间】:2011-11-28 09:06:10
【问题描述】:
我遇到过一种技术,人们在 C++ 中使用向量来接收或发送 MPI 操作的数据,因为据说它可以将元素连续存储在内存中。
但是,我仍然怀疑这种方法对于任何大小的向量是否仍然稳健,尤其是当向量增长到一定大小时,这种假设可能会失效。
下面是我所说的一个例子:
MPI_Recv( &partials[0] , partials.size() , mpi_partial , 0,
DALG_ELIMINATE_REQ_MSG ,MPI_COMM_WORLD , &status );
【问题讨论】:
-
有什么问题?您希望我们帮助您解决的具体问题是什么?
-
^我就是喜欢这样的回复。总是给你一种被警察审讯的感觉:P
-
我觉得他没有阅读问题标题,而是依赖问题描述。
-
@takwing:检查史蒂夫链接到的问题的答案。简而言之,C++ 标准将向量定义为连续的。
-
@takwing:
vector不会“随机溢出元素”,但如有必要,整个事情都会重新定位。因此,这种用法是否安全取决于您所说的“增长” - 如果您的意思是将来您的程序将使用比现在更大的大小,那很好。如果你的意思是你在 MPI 持有指针时调用resize,那就不好了。
标签: c++ vector contiguous