2

我已经创建了这个程序来从 foodbanks.dat 和 Residences.dat 进行距离接近分析,它在控制台中运行良好,但我需要帮助才能在 MPI 上运行。只是如何向量到 C 数组,因为在 MPI 中将不接受 C++ 向量以及如何将每个操作块(读取文件并填充向量,计算距离以获得壁橱食物回馈和分析 KM 中的范围)到单独的函数中

4

1 回答 1

2

std::vector在内部使用一个数组,因此您所要做的就是获取该数组。

如果你有 C++11,你可以使用std::vector::data来获取指向std::vector.

如果你没有 C++11,你总是可以像这样使用std::vector::front&front()来获取指向数组的指针。

只需确保在执行此操作时不要在获取指针后增加向量内数组的大小,因为这会使您的指针无效。

代码示例:

#include <vector>
#include <iostream>

int main()
{
    std::vector<int> myVec;
    myVec.push_back(0);
    myVec.push_back(1);

    //int* myArrayPointer = myVec.data(); // For C++11
    int* myArrayPointer = &myVec.front(); // For pre-C++11

    for(std::size_t i = 0; i < myVec.size(); ++i)
    {
        std::cout << myArrayPointer[i];
    }

    return 0;
}
于 2013-11-10T20:15:17.877 回答