首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尺寸大于2147483647的BooleanArray

尺寸大于2147483647的BooleanArray
EN

Stack Overflow用户
提问于 2022-01-21 23:00:56
回答 1查看 101关注 0票数 2

我正试图在科特林实现阿特金的筛子。我希望它支持最多2^32-1的数字,所以筛子必须是一个UInt-indexed数组。

我试着像这样初始化筛子:

代码语言:javascript
复制
var sieve = BooleanArray(limit + 1u)

然后,我得到了错误:

代码语言:javascript
复制
error: type mismatch: inferred type is UInt but Int was expected

那么,是否有任何方法可以使BooleanArray (或等效)存储至少有4294967295个值?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-21 23:23:16

最容易的方法可能是使用UInt作为大小,然后在内部映射2种常见的BooleanArray,后者使用Int进行寻址,尽管从来不可能有负的索引值(这似乎是设计上的错误--或者至少缺少优化)。这意味着,我们还可以使用签名的Int来解决所有问题。我的意思是,在内部将负值映射到一个BooleanArray,将正值映射到另一个BooleanArray。实际的问题似乎是,正在传递一个签名的Int,但是只能使用正的范围(50%)来处理数据。我们可以使用absoluteValue,因为在哪个方向填充数组并不重要。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70808542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档