所以我想创建一个包含九个元素的数组,但是我想要由我指定索引,也就是说,而不是访问我的数组元素,
std::array<bool,9> myarray
Run Code Online (Sandbox Code Playgroud)
使用myarray[0], myarray[1], myarray[2]...我想访问它们,例如,as
myarray[21], myarray[34], myarray[100], myarray[9], myarray[56]...
Run Code Online (Sandbox Code Playgroud)
但仍保留标准库数组的属性并仅存储9个元素.
更具体地说,我需要轻松访问布尔矩阵的元素.也就是说,假设我有矩阵:
Array<array<bool,100>,100> mymatrix;
Run Code Online (Sandbox Code Playgroud)
并且它将被用于简单地使用来检查某些位置(说位置x,y) mymatrix[x][y].我也知道有些元素永远不会被检查,所以它们并不是真正需要的.为了节省尽可能多的内存,我们的想法是摆脱那些不需要的元素,但仍然保留结构来检查我的元素.
这样的数组最好用标准C++库提供的一个关联容器表示 - 即a std::map<int,bool>或a std::unordered_map<int,bool>.这些容器提供了一种在C++中执行此操作的惯用方法.
使用关联容器的另一个好处是能够迭代值及其外部"索引".
如果您坚持使用数组来存储值,则必须创建自己的类,以在外部索引和内部索引之间构建"映射".这将占用大量内存用于O(1)访问时间,使用CPU周期进行二进制搜索以及索引到索引映射,使用线性搜索或硬编码外部索引.
| 归档时间: |
|
| 查看次数: |
932 次 |
| 最近记录: |