Int 数组到C++容器
Int array to C++ container
我有一些来自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。
只需使用vector
的data()
成员函数:
this->DoUsefulThingsWithData(payload.data());
...所以我应该在继续使用之前将其复制到某些东西中。
如果我使用矢量...但这值得开销吗?
开销与什么相比?std::vector
是此用例的理想标准容器。
也就是说,如果这是函数的作用,最好让DoUsefulThingsWithData
实现选择如何存储数据。
如果我使用向量,则不必将大小传递给
DoUsefulThingsWithData
如果使用对数组的引用作为参数类型,也不需要传递大小。我推荐这个。
相关文章:
- 在提升multi_index容器中,是否定义了"default index"?
- 用于访问容器<T>数据成员的正确 API
- Eigen如何在容器循环中干净地附加矩阵
- 模板专用化(按容器):value_type
- 关联容器的下界复杂性:成员函数与非成员函数
- 更多constexpr容器是否需要mark_immutable_if_consexpr
- 在STL容器中使用模板类
- 当有分配器意识的容器被复制/移动时,反弹分配器是否被复制/移走
- 检查函数返回类型是否与STL容器类型值相同
- STL算法函数在多个一维容器上的使用
- 如何将带有自定义对象的容器从C++传递到QML
- 在没有未定义行为的情况下实现类似std::vector的容器
- 将 BASE 派生类存储在同一容器中
- 为什么 STL 容器适配器堆栈中的 top 返回常量引用?
- 在C++中迭代 2D 容器的最干净方法
- 将线程中的数据存储到全局容器的最佳方法?
- 如果我真的真的想从 STL 容器继承,并且我继承构造函数并删除新运算符,会发生什么?
- 使用带有C++对象和标准库容器的插件系统
- 使用 std::index_sequence 初始化具有固定大小数组成员的 POD 结构容器
- 我可以用字符串变量而不是它的名字创建容器吗? C++