相关疑难解决方法(0)

C++ 中整数向量的序列化/反序列化

待完成任务

我正在尝试将整数向量序列化为字符串,以便可以将其存储到文件中。使用的方法是将整数逐字节复制到缓冲区中。为此,我使用了 std::copy_n 函数。

为了反序列化,我反向做了同样的事情,即将缓冲区中的字节逐字节复制到整数中,并将这些整数附加到向量中。

我不确定这是否是实现此目标的最佳/最快方法。

代码

序列化函数

char *serialize(vector <int> nums)
{
    char *buffer = (char *)malloc(sizeof(int)*nums.size());
    vector <int>::iterator i;
    int j;
    for(i = nums.begin(), j = 0; i != nums.end(); i++, j += 4) {
        copy_n(i, 4, buffer+j);
    }
    return buffer;
}
Run Code Online (Sandbox Code Playgroud)

反序列化函数

vector <int> deserialize(char *str, int len)
{
    int num;
    vector <int> ret;
    for(int j = 0; j < len; j+=4) {
        copy_n(str+j, 4, &num);
        ret.push_back(num);
    }
    return ret;
}
Run Code Online (Sandbox Code Playgroud)

任何关于如何改进这段代码的输入都会非常有帮助。我也很想知道实现相同目标的其他方法。

c++ optimization serialization

2
推荐指数
1
解决办法
1万
查看次数

如何通过mpi C++发送布尔数据类型?

我是 C++ 的新手,并试图通过 MPI 发送 bool 数据类型,但 C++ 不支持这种数据类型。

我试图制作它MPI_BYTEMPI_INT但它什么也没打印。

#include <iostream>
#include "mpi.h"

using namespace std;

int main(int argc, char **argv)
{ 
    int R,P;
    MPI_Status status; 
    bool check = false;
    MPI_Init(&argc, &argv);
    MPI_Comm_size(MPI_COMM_WORLD, &P);
    MPI_Comm_rank(MPI_COMM_WORLD, &R);
    if (R == 0)
    {
       check = true;
       MPI_Send(&check,1,MPI_BYTE,1,1,MPI_COMM_WORLD);
    }
    else if (R == 1)
    {  
       MPI_Recv(&check,1,MPI_BYTE,0,1,MPI_COMM_WORLD,&status);
       cout << R <<"\t check is \t"<< check << endl;
    }

    MPI_Finalize();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

没有错误消息。

c++ mpi

0
推荐指数
1
解决办法
1331
查看次数

标签 统计

c++ ×2

mpi ×1

optimization ×1

serialization ×1