c++ - 从二维数组中获取一维数组索引

标签 c++ arrays math 2d

有没有办法从二维数组中获取一维数组的数组索引?

例如:我有一个二维数组,数组大小未知,并在需要时更改(我使用 std::vector)到 push_back。只要它是一个二维数组,它就可以正常工作,但我需要获取这个二维数组的一维数组索引。

2D array:
Group 1 - 1, 2, 3
Group 2 - 4, 5, 6
Group 3 - 7, 8, 9, 10, 11, 12

等等。

所以,基本上有一种快速的方法可以知道当从第 2 组中选择 6 时,即 Array[1][2] = 6 => 我需要数组索引为:1D array=> Array[5] = 6 => 即我需要 5 作为我的答案。我已经尝试了几件事,但到目前为止还没有运气。有什么建议吗?

最佳答案

如果您的数据是静态的,您可以创建另一个数组,在其中存储每个一维数组的偏移量。对于您的示例,您将拥有以下数组 offset = {0, 3, 6}。然后你可以通过offset[row] + col找到索引。

如果可以更改行大小,则可以将每行的大小存储在二叉索引树中,并通过单个查询在 O(log n) 中找到偏移量,其中 n 是行数(一维 vector ).但是,每次更改行大小时,都必须在 O(log n) 中再次更新结构。

关于c++ - 从二维数组中获取一维数组索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20246924/

相关文章:

c++ - 无法定位错误cpp linux

C 矩阵结构

java - 数学.Sqrt(x);不工作?

algorithm - 矩阵中的路径数

c++ - 如何将 `.CHM` 文件用于 C++ Builder XE7 64 位应用程序?

c++ - SDL图像不显示

c++ - 使用链表 C++ 的导数计算器

c# - 在一个 Json 中创建多个表而不使用 JArray?

php - 使用父子菜单项创建多选下拉列表

math - 'pathological programming'指的是什么?