【发布时间】:2017-02-22 16:42:25
【问题描述】:
我有一个“二维”数据以行主要方式存储在双精度数组中。 我的数据有 5 列,时间、x、y、z 和字段。
- T1, x1, y1, z1, F1
- T2, x2, y2, z2, F2
- T3、x3、y3、z3、F3 …
此数据以行主要方式存储在双一维数组中。喜欢
double dataArray[] = { T1, x1, y1,z1,F1, T2,x2,y2,z2,F2, T3,x3,y3,z3,F3, ... };
现在我想找到时间等于或大于给定值 T0 的数据的第一行。我怎样才能使用 std::lower_bound 来做到这一点?
我想我需要一个 ForwardIterator 来返回该数组中的每 5 个元素,但不知道如何做到这一点。任何帮助表示赞赏。
【问题讨论】:
-
看起来像 XY 问题。以正确的格式存储数据(具有双字段的结构),不仅您的问题会消失,而且您的代码会变得更具可读性并且不易出错
-
@Slava,我无法更改数据的存储方式。
-
遇到行主要格式的数据是很常见的(例如与 fortran 交互时)。仅仅为了迭代而改变表示是非常低效的。 C++ 的伟大之处在于您可以定义在任何数据格式上以预期方式工作的类型。
-
@ArtYerkes,正是我的情况,我的 dataArray 来自 FORTRAN 子例程,我无法更改下划线数据结构。在 FORTRAN 和 C++ 例程中访问相同的数据。
标签: c++ stl stl-algorithm