草庐IT

PackedArray

全部标签

c++ - 整数数组的位封装

我有一个整数数组,假设它们是int64_t类型。现在,我知道只有每个整数的前n位是有意义的(也就是说,我知道它们受到某些界限的限制)。以删除所有不必要空间的方式转换数组的最有效方法是什么(即我在a[0]处有第一个整数,在a处有第二个整数[0]+n位等等)?我希望它尽可能通用,因为n会不时变化,但我猜可能会有针对特定n的智能优化,例如2或某事的幂。当然我知道我可以迭代valueovervalue,我只是想问问你StackOverflowers是否可以想出一些更聪明的方法。编辑:这道题不是关于将数组压缩到尽可能少的空间。我只需要从每个整数中“剪切”n位并给定数组,我知道我可以安全剪切的确切