在包含预计算结果或可计算结果的结构中使用联合
Using a union in a struct that contains either pre-calculated or calculatable results
,所以我需要一个结构。从本质上讲,其目的是从各种功能中返回一系列这些结构。所有这些结构都将被收集(也许几百),然后我最少需要正常。
因此,总而言之,我有这样的情况,其中一个结构只需要一个正常值。
因此,我试图创建一个捕获这个想法的结构。这样,一个选择的结构可以包含其正常或计算方法的方法。因此,我设计了以下结构:
struct result {
float t;
bool calculated; // Tells whether to use result.normal.norm or result.norm.calculate()
union normal {
float2 norm;
float2 (*calculate)();
};
};
这是表达这个想法的正确方法吗?
*以示例为例,其中一些正常的计算可能涉及一些计算,例如TRIG,以在复杂的弯曲表面上找出正常情况。我们只想在绝对必要的情况下进行计算。
(我不相信您提供了足够的上下文来完全回答您的问题,但我会根据您给我的东西尝试。)
这是表达这个想法的正确方法吗?
由于您似乎关心性能 - 可能不是。通过功能指针调用功能是(编辑:)通常很昂贵。更重要的是,该函数在调用时甚至都不会获得t
字段的值...因此,这甚至可能无法正常工作。
您该怎么办?
首先,弄清楚这是否是疼痛点W.R.T.表现。不要只是优化它,因为有优化的潜力。
假设这对优化很有用 - 尝试避免整个重点实现。取而代之的是,确定哪种浮子需要其规范,然后愿意花一些努力来实现这一规范;这不会那么糟糕,因为您只会为一条数据而不是全部数据工作。
ps-如今无需使用工会,我们在C 17中有std::variant
。也可以为您节省布尔值。
相关文章:
- 带有大结构变量的 CUDA 内核函数给出了错误的结果
- 菱形层次结构中的虚函数重载在 clang 和 gcc 中产生不同的结果
- 如何使用 spirit x3 将解析的结果移动到结构中
- 根据标准对结构向量进行排序,然后显示结果
- 在包含预计算结果或可计算结果的结构中使用联合
- 节省增强精神递归匹配结果为C 结构
- 根据定界符将字符串向量分开,并将结果存储在结构中
- 通过更改代码格式来计算结构向量中包含的双精度变量的平均值的不同结果?
- 对 std::atomic::load 的结果使用结构取消引用 (->) 运算符是否安全
- 大小(结构体)..给出错误的结果,VS 2010
- 一个C++结构,它可以提高可读性,计算结果为零,但不是宏
- boost::spirit: qi::rule 或包含 qi::rule 作为解析结果的结构
- 将结构传递给函数时出现意外结果
- 对结构进行操作并将结果分配给同一结构是否是一种不好的做法?为什么
- Qt数据报结构结果:混合序列
- 执行set_difference时出错:变量结果不是结构
- 如何改进存储多个结果的结构
- c++,从数据库结果创建结构体
- 在宿主结构体上设置指针时出现意外结果
- 尺寸给我的结构带来意想不到的结果