在rust中,是否有一种有效的方法来存储一个大的Vec<f64>,它可能偶尔包含非f64。一种简单的方法:
Vec<f64>
enum MaybeNumber { Number(f64) NonNumber(Box<...>) }
字符串Vec<MaybeNumber>将存储额外的8位来容纳枚举,从而导致每个f64 16位。
Vec<MaybeNumber>
xzv2uavs1#
您可以将NonNumber(Box<...>)存储在Vec<f64>之外,并在其位置存储虚拟f64。然后,您需要维护一个单独的数据结构,该结构指示在哪些索引处存在伪f64 s,并且需要由NonNumber值替换。
NonNumber(Box<...>)
f64
NonNumber
1条答案
按热度按时间xzv2uavs1#
您可以将
NonNumber(Box<...>)
存储在Vec<f64>
之外,并在其位置存储虚拟f64
。然后,您需要维护一个单独的数据结构,该结构指示在哪些索引处存在伪
f64
s,并且需要由NonNumber
值替换。