C++--浮点***避免
C++ -- float*** avoidance
我要将一些自定义数据结构转换为float**,并将它们作为只处理float**的方法的参数传递。
在我的第一个版本中,方法只使用2个float**作为参数,这样我就可以很容易地获得
MyClass::MyMethod(float** data1, float** data2){}
在第二个版本中,我想提供一个浮动**的列表,其长度随着执行的不同而变化。
我只有float***作为一个解决方案,这一点都不好。
MyMethod是C型的,我不想要任何向量等…
其他想法?
感谢
返回一个包含一些浮点**的结构。您甚至可以传入结构的实例。
这意味着被调用的函数不会直接操作调用方的float**,我认为这更干净。
作为C程序员,我们正在解决这个问题,我知道有时我们被限制不使用真正的C++技术。
如果你有(为任何语法错误道歉,我写C已经好几年了)
struct floatCarrier { float **ppFloat1, float **ppFloat2 }
typdef FloatCarrier struct floatCarrier
您的界面现在可以是
FloatCarrier myMethod (FloatCarrier in) /* passed by value, as an example */
myMethod的实现可以使用输入FloatCarrier中的float**。如果它需要修改数组,那么它会创建一个带有新float**实例的新FloatCarrier,并且在完成后返回新FloadCarrier。这确实让调用者承担了从返回的结构中获取新float**的责任,但不知何故,我喜欢这样,感觉更干净。
至于你应该有一个已知数量的成员还是一个数组。。。您的示例正好有2个参数,因此结构将有两个成员,但您可以有一个数组或任何您喜欢的东西。
它如何解决您的问题:您不再需要更改呼叫者的浮动***,因此没有浮动***。我们使用结构作为函数,它只能返回一个值,因此我们将结果打包到一个对象中。
问题不在于float***
(或float**&
),而是如何得出结论:float**
代表什么?如果他们代表某个东西,给它一个"名称"和一个"范围"。换句话说,创建一个"类",让该类一次管理*。否则,你能做的任何代码都会显得晦涩难懂。
如果所有代码都减少为通过大量显式间接操作单个变量,那么使用C++就没有意义了。
尽管可以找到"二星词"中的解决方案,但如果不是这样,请尝试重新构造代码以使其更具可扩展性。
- C++将浮点指针值舍入为小数位数
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 为什么在浮点中从大到小会引入更多的误差
- 我可以信任表示整数的浮点或双精度来保持精度吗
- 为什么mpfr_printf与十六进制浮点(%a转换说明符)的printf不同
- C++Lua用户数据扰乱了Mathfu浮点值
- 将CHW格式的浮点向量转换为cv::Mat
- 算术运算的结果类似于:C浮点变量中的1/3
- 格式化浮点值:返回默认值
- 浮点定向舍入和优化
- 短是浮点类型吗?
- 从VS 2015更新3更新到VS2015更新3 d后浮点计算行为不同的原因
- 使用 int 表示浮点除法 C++
- 如何避免浮点值的q警告
- C++中的 Json:将数字解析为字符串以避免浮点不准确
- 如何避免浮点格式错误
- 无论如何,避免浮点操作的最大在线点问题
- C++--浮点***避免
- 如何在模板中定义浮点常量.避免在运行时强制转换
- 当用户输入一个字符而不是浮点和整数时,如何避免无限循环