加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 具有自定义索引的数组

发布时间:2020-12-16 09:57:22 所属栏目:百科 来源:网络整理
导读:所以我想创建一个包含九个元素的数组,但是我想要由我指定索引,也就是说,而不是访问我的数组元素, std::arraybool,9 myarray 使用myarray [0],myarray [1],myarray [2] ……我想访问它们,例如, myarray[21],myarray[34],myarray[100],myarray[9],myarray[56].
所以我想创建一个包含九个元素的数组,但是我想要由我指定索引,也就是说,而不是访问我的数组元素,

std::array<bool,9> myarray

使用myarray [0],myarray [1],myarray [2] ……我想访问它们,例如,

myarray[21],myarray[34],myarray[100],myarray[9],myarray[56]...

但仍保留标准库数组的属性并仅存储9个元素.

更具体地说,我需要轻松访问布尔矩阵的元素.
也就是说,假设我有矩阵:

Array<array<bool,100>,100> mymatrix;

并且它将用于简单地使用mymatrix [x] [y]来检查某些位置(比较位置x,y).我也知道有些元素永远不会被检查,所以它们并不是真正需要的.为了节省尽可能多的内存,我们的想法是摆脱那些不需要的元素,但仍然保留结构来检查我的元素.

解决方法

这样的数组最好用标准C库提供的一个关联容器表示 – 即std :: map< int,bool>或者std :: unordered_map< int,bool>.这些容器提供了在C中执行此操作的惯用方法.

使用关联容器的另一个好处是能够迭代值及其外部“索引”.

如果您坚持使用数组来存储值,则必须创建自己的类,以在外部索引和内部索引之间构建“映射”.这将占用大量内存用于O(1)访问时间,使用CPU周期进行二进制搜索以及索引到索引映射,使用线性搜索或硬编码外部索引.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读