首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我应该为整数对使用什么数据结构?

我应该为整数对使用什么数据结构?
EN

Stack Overflow用户
提问于 2015-07-30 00:46:06
回答 2查看 1.6K关注 0票数 1

我正在努力优化我的代码,以加快计算速度并减少内存消耗。我需要存储年份和成本的数据。目前我使用固定数组来保存值。

例如,我会有一个整数数组:

代码语言:javascript
运行
复制
integer[0] = 0,  
integer[1] = 200,  
integer[2] = 0,  
integer[3] = 0,  
integer[4] = 200,  
integer[5] = 0,  
...   
integer[99] = 0

其中整数=0表示2015年的成本为0美元,integer1 = 200表示2016年的成本为200美元,依此类推。由于我在内存中保存了数百万个这样的数组并用于计算,因此我希望将对内存和性能的影响降至最低。

为了澄清,我使用数据的方式是为了图表目的。一旦我将成本分配给年份,我就会根据它们所属的对象系列对数组进行汇总。然后我将它们显示在堆叠的条形图中。

有没有更好的方法来存储我的数据?我正在考虑键值列表,所以我只存储非零成本和年份,但我不知道这是否会有很大帮助。

EN

回答 2

Stack Overflow用户

发布于 2015-07-30 00:49:27

使用Dictionary<int, int>

代码语言:javascript
运行
复制
var costs = new Dictionary<int, int> {
    { 2014, 150 },
    { 2016, 200 },
};

它不一定会占用较少的内存,但可以避免存储空条目,并且数据的含义会更明显一些。

票数 3
EN

Stack Overflow用户

发布于 2015-08-01 02:51:36

如果(1)你所做的只是求和,(2)不需要对任何给定值进行查找,而只是简单地迭代它们,(3)你的值是真正稀疏的,

然后是像这样的东西

代码语言:javascript
运行
复制
integer[0] = 200,  
integer[1] = 200,  
...   

代码语言:javascript
运行
复制
year[0] = 2016,
year[1] = 2019,
...

将为您提供最小的内存占用,而不会降低效率。字典(散列)会占用内存;对于内存占用而言,数组是最经济的,如果可以假定省略年份的默认值(0),则更是如此。但这只适用于不需要查找的情况,因为对于这种结构,这是O(n)练习。

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

https://stackoverflow.com/questions/31706449

复制
相关文章

相似问题

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