通用 C++ 多维迭代器

2024-03-21

在我当前的项目中,我正在处理多维数据结构。 底层文件按顺序存储(即一个巨大的数组,没有向量的向量)。 使用这些数据结构的算法需要知道各个维度的大小。

我想知道是否已在某处以通用方式定义了多维迭代器类,以及是否有任何标准或首选方法来解决此问题。

目前,我只是使用线性迭代器和一些附加方法,这些方法返回每个维度的大小以及第一部分中有多少个维度。我不喜欢它的原因是因为我无法以合理的方式使用 std::distance (即仅返回整个结构的距离,而不是单独返回每个维度)。

在大多数情况下,我将以线性方式访问数据结构(第一个维度开始到结束 -> 下一个维度+...等等),但最好知道一个维度何时“结束”。我不知道如何在这种方法中仅使用operator*()、operator+() 和operator==() 来做到这一点。

向量的向量方法不受欢迎,因为我不想分割文件。此外,算法必须在不同维度的结构上运行,因此很难概括(或者也许有办法?)。

Boost multi_array 也有同样的问题(迭代器的多个“级别”)。

我希望这不是太模糊或抽象。任何正确方向的提示将不胜感激。

我自己再次寻找解决方案并重新访问了 boost:: multi_array 。事实证明,可以用它们生成数据的子视图,但同时也可以在顶层采用直接迭代器并隐式“展平”数据结构。然而,multi_array 的实现版本不适合我的需要,因此我可能会自己实现一个与其他 multi_array 兼容的版本(在后台处理文件的缓存)。

实施完成后我会再次更新。


我刚刚决定在 Github 上打开一个公共存储库:多维网格 https://github.com/coin-au-carre/MultiDimGrid这可能有助于满足您的需求。这是一个正在进行的项目,因此 如果您能尝试一下并告诉我您错过/需要什么,我会很高兴。

我已经开始研究这个了topic https://codereview.stackexchange.com/questions/97260/generic-multi-dimension-grid-array-class-in-c关于代码审查。

简单地说:

MultiDim Grid 提出了一种平面一维数组,它提供了 多维坐标和展平之间的通用快速访问 指数。

您将获得容器行为,以便可以访问迭代器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通用 C++ 多维迭代器 的相关文章

随机推荐

  • 像树一样渲染嵌套列表

    我如何使垂直边框停在最后一个元素处 它只能与 CSS3 现代浏览器兼容 但需要在各种背景下工作 即透明 http jsfiddle net ShgD6 http jsfiddle net ShgD6 由此 To this 我通过修改这个小提
  • 如何在猫头鹰旋转木马的角度中制定指令?

    你能告诉我如何在 Angular js 中制作指令吗 我需要在 js 中使用 owl carousel 插件 就像我在 jqm fiddle 中所做的那样http jsfiddle net ezanker o9foej5L 1 http j
  • Vuetify 离线文档

    我已经开始使用 Vuetify 添加 ui 组件并使用预定义的布局 问题是我必须时不时地查看在线文档 并且要求我永远连接到互联网 有没有办法获取 Vuetify 的离线文档 就像使用 doxygen javadocs 构建的 html 或
  • 如何使用 Scala 的 DataFrame 比较表中的每一列

    有两张桌子 一张是ID表1 一张是属性表2 Table 1 Table 2 如果表1中同一行的ID具有相同的属性 则得到数字1 否则得到0 最终得到结果表3 Table 3 例如 id1和id2具有不同的颜色和大小 因此id1和id2行 表
  • 如何在jQuery中选择所有本地链接

    我需要选择所有本地链接 无论是否以 path to page http mydomain com path to page https mydomain com path to page 并将它们替换为 path to page 感谢您的帮
  • 在仅附加表中设置版本列

    我们有一个表来存储记录的版本 这些列是 Id Guid VersionNumber int Title nvarchar Description nvarchar etc 保存项目将在表中插入具有相同 ID 和增量版本号的新行 我不确定如何
  • 如何使用attachEvent引用调用者对象(“t​​his”)

    使用方法 attachEvent 在 IE 中 如何引用调用者对象 触发事件的元素 this In normal浏览器 使用 addEventListener 变量this指向元素 而在 IE 中它指向window object 我需要它与
  • Visual Studio 2013 Update 2 无法打开 cshtml

    我安装了新的 VS2013 Update 2 只要我打开 cshtml 文件 VS 就会崩溃 I tried 修复VS 停用所有扩展 devenv exe ResetSkipPkgs 重置所有设置 没有成功 安装 Xamarin 后我遇到了
  • 用Python写的3D OpenGL游戏能好看又运行快吗?

    我计划使用 jMonkeyEngine 在 Java 中编写一个简单的 3D 等轴测视图 游戏 没什么好看的 我只是想学习一些有关 OpenGL 的知识并编写高效的算法 随机地图生成算法 当我计划要做什么时 我开始考虑是否要转向 Pytho
  • System.IdentityModel 和 Microsoft.IdentityModel 之间有什么区别,我应该使用哪一个?

    我刚刚开始尝试编写一个联合声明提供程序 我正在使用http claimsid codeplex com http claimsid codeplex com 示例作为我的模板 因此 我启动 VS2010 开始我自己的项目 我注意到的第一件事
  • Bootstrap 中心导航栏项目

    我知道我可以将导航栏项目向左和向右推送 但如何将它们居中呢 text align center 不起作用 也没有我想到的任何其他事情 您将需要修改导航栏组件的一些 CSS 规则 所以添加一个类center to nav navbar以及以下
  • Sql 视图的流畅 Nhibernate 映射

    我在 asp net mvc3 和 c 中使用 Fluent Nhibernate 我正在按以下方式工作来生成和映射一个类 Mapping using FluentNHibernate Mapping using Com Web Domai
  • 如何使用 Gradle 2.0 下载 javadoc 和 jar 源?

    我正在使用 Gradle 2 0 我应该写什么build gradle这样 javadocs 和源代码也会与 jar 一起下载吗 我猜您的问题与开发工作区有关 以下链接解释了如何使用 IDE 插件在 Gradle 中添加所需的配置 For
  • Android:使用 MotionEvent 在自定义 ViewGroup 中对视图进行拖放定位

    我在创建的自定义 ViewGroup 上定位视图元素时遇到问题 特别是在拖放情况下 我的目标是 Android 2 2 及更高版本 因此我无法真正使用 Android 3 中出现的拖放 API 我的自定义 ViewGroup 称为 Node
  • 如何一般性地比较整个java bean?

    我一直在尝试使用 org apache commons beanutils 库来获取方法 习惯用法来评估相等性all两个实例之间的属性 即 bean 的通用 equals 方法 有没有一种简单的方法可以使用这个库来做到这一点 或者我以错误的
  • MySQL - 将用户排在最高分列表中

    我有一个 MySQL 查询 它选择我的成绩中排名前 3 的球员users表 然后创建一个额外的列 其中分配了它们的排名 SELECT s curRank curRank 1 AS rank FROM users AS s JOIN SELE
  • 如何在 SQL 中更新/插入指定日期范围内的随机日期

    请原谅我 我是一个绝对的新手 我需要 phpmyadmin 中这张表的帮助 我的表有以下列 Primary ID Begin Date End Date Timestamp 如何在 phpmyadmin 中更新具有指定日期范围 例如 一个月
  • 在 C++ 纯虚函数上应用“using”关键字

    B 类重写了 A 类的纯虚函数 print C 类继承了 B 类并具有 using A print 语句 那么为什么 C 类不是抽象类呢 class A public virtual void print 0 class B public
  • 仅在多索引中的第二个索引上使用 .loc

    我有多索引数据框 如下所示 value year name 1921 Ah 40 1921 Ai 90 1922 Ah 100 1922 Ai 7 其中year and name是指数 我想选择名称所在的每一行Ai出现 我努力了df loc
  • 通用 C++ 多维迭代器

    在我当前的项目中 我正在处理多维数据结构 底层文件按顺序存储 即一个巨大的数组 没有向量的向量 使用这些数据结构的算法需要知道各个维度的大小 我想知道是否已在某处以通用方式定义了多维迭代器类 以及是否有任何标准或首选方法来解决此问题 目前