如何将C++ std::vector或float数组赋值给OAT++ DTO的Vector类型字段
赋值方法
首先明确:oatpp DTO中声明的Vector<Float32>是oatpp框架自定义的容器类型,与std::vector<float>不直接兼容,需要手动转换赋值,分两种场景处理:
场景1:已有std::vector<float>类型对象
直接调用oatpp向量的createShared方法,传入std向量的首尾迭代器即可完成转换:
// 假设你的std向量名为stdMatrix std::vector<float> stdMatrix = ...; tempMatrix->MatrixData = oatpp::Vector<oatpp::Float32>::createShared(stdMatrix.begin(), stdMatrix.end());
场景2:只有float*类型的原始数组
需要先拿到数组的元素总个数,再传入指针的首尾地址完成转换:
// 假设原始数组指针为rawMatrix,元素个数为matrixLength float* rawMatrix = ...; size_t matrixLength = ...; tempMatrix->MatrixData = oatpp::Vector<oatpp::Float32>::createShared(rawMatrix, rawMatrix + matrixLength);
注意事项
oatpp定义的Float32类型与原生float内存布局完全一致,转换过程不会产生精度损失,也不需要额外做类型强转。
内容的提问来源于stack exchange,提问作者relaxtheo
相关产品推荐
相关产品推荐

