首页 > 解决方案 > Int 数组到 C++ 容器

问题描述

我有一些来自int数组中的源的数据。本质上..

// C interface
typedef struct {
    int payload[1024];
    int id;
} tData;

// C++ interface
void MyModule::HandleData(tData *data){
   this->DoUsefulThingsWithData(data->payload);
}

这是来自以功能样式编写的 C 文件。我现在想获取这些数据并在我的 C++ 模块中使用它。我是将它们全部打包到一个向量中,还是应该继续按原样使用数据?如果我使用向量,我不必将大小传递给DoUsefulThingsWithData,但是否值得开销?此外,我不完全知道该数据何时会变得无关紧要(范围或释放),因此我应该在继续使用之前将其复制到某些东西中。性能(复制)和大小开销最低的最佳容器是什么?注意:我在 c++ 98

标签: c++c++98

解决方案


我是否将其全部打包到向量中?

是的:

std::vector payload(tData.payload, tData.payload + sizeof(tData.playload));

如果我使用向量,我不必将大小传递给 DoUsefulThingsWithData。

只需使用vectordata()成员函数:

this->DoUsefulThingsWithData(payload.data());

推荐阅读