Int 数组到C++容器

Int array to C++ container

本文关键字:容器 C++ 数组 Int      更新时间:2023-10-16

我有一些来自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

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

是的:

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

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

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

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

...所以我应该在继续使用之前将其复制到某些东西中。

如果我使用矢量...但这值得开销吗?

开销与什么相比?std::vector是此用例的理想标准容器。

也就是说,如果这是函数的作用,最好让DoUsefulThingsWithData实现选择如何存储数据。

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

如果使用对数组的引用作为参数类型,也不需要传递大小。我推荐这个。