C++ 如何将向量拆分为子集?

C++ 如何将向量拆分为子集?,c++,process,mpi,C++,Process,Mpi,我试图根据我在应用程序中使用的进程数将向量拆分为子集。我创建了伪代码,但我真的不知道如何输出子集 问题是: 使用从residences.dat读取地址记录的子集 条纹。对于n个进程,每个进程计算一个唯一的 基于每N个记录的记录。此文件中的记录数 子集应大约为居住记录的#-/过程的#-。在所有使用的并行进程中,不应省略任何地址,也不应多次处理任何地址。阿尔索 请注意,一次只能在内存中存储一条记录 过程 我的代码: std::vector<Residence> spliteResiden

我试图根据我在应用程序中使用的进程数将向量拆分为子集。我创建了伪代码,但我真的不知道如何输出子集

问题是:

使用从residences.dat读取地址记录的子集 条纹。对于n个进程,每个进程计算一个唯一的 基于每N个记录的记录。此文件中的记录数 子集应大约为居住记录的#-/过程的#-。在所有使用的并行进程中,不应省略任何地址,也不应多次处理任何地址。阿尔索 请注意,一次只能在内存中存储一条记录 过程

我的代码:

std::vector<Residence> spliteResidenceDaata(vector<Residence> rs,int numProces = 0);
function body 

    std::vector<Residence> spliteResidenceDaata(vector<Residence> rs,int numProces)
    {

        std::vector<Residence> residenceSet;
        //get the size of vector
        int res_set_size = rs.size();
        int sizrOfSubSet =res_set_size/numProces;

        //output the arry subsite some "help here"

        return residenceSet;
    }

我还没有测试过这段代码,但是类似于这段代码的一些东西应该可以工作——与其让函数返回一个向量,不如让它返回一个向量向量向量,如下所示:

vectors[0];   //first quarter
vectors[1];   //second
vectors[2];   //third
vectors[3];   //fourth + remainder

std::vector split(std::vector您需要一次读取一条记录,而不是像vector认为您需要的那样传递所有子集
而(!residefile.eof())
{
住宅文件>>res.x>>res.y

    if ( numLines % numProcs == rank)
    {
        //call the  process
        //populate_distancesVector(res,foodbankData);
        analysis_range(populate_distancesVector(res,foodbankData),count);

    }
    ++numLines;

} 

欢迎提出任何意见或建议?
vectors[0];   //first quarter
vectors[1];   //second
vectors[2];   //third
vectors[3];   //fourth + remainder
    if ( numLines % numProcs == rank)
    {
        //call the  process
        //populate_distancesVector(res,foodbankData);
        analysis_range(populate_distancesVector(res,foodbankData),count);

    }
    ++numLines;

}