是否可以使用1D索引访问C ++ 2D int数组?

卢克

按照标题,我正在寻找一种使用单个预计算索引来访问2D int数组的方法。

换句话说,我想array[z]代替array[x][y],而将'array'保留为int[][]

有没有一种方法可以将数组转换为一维数组而没有任何开销?

我想避免使用指针(至少在某种意义上*(&array[0][0] + index)),因为这对性能至关重要,而在我的所有测试中,它们的速度都较慢。(编辑:这是在旧的MSVC编译器上带有一组特定的优化标志-通常不是这种情况。)我还希望避免进行任何算术或函数调用,除非它们比仅以2D格式访问数组更轻巧。

布兰登

那使用(&arr[0][0])[i * width + j]??

您是否有理由不想使用指针语法?它并不比索引慢。。或者甚至只是使用1D数组并将其视为2D数组?

#include <iostream>
#include <algorithm>

int main()
{
    int arr[5][5];
    int n = 0;
    std::generate(&arr[0][0], &arr[4][5], [&] {return ++n;});

    int* a = &arr[0][0];
    std::for_each(&a[0], &a[25], [&](int i){std::cout<<i<<" ";});

    /*int* a = &arr[0][0];
    for (int i = 0; i < 5; ++i)
        for (int j = 0; j < 5; ++j)
            std::cout<<a[i * 5 + j]<<" ";*/

    return 0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C:传递2D int数组

来自分类Dev

将 2d 数组索引为 1d

来自分类Dev

C ++ 2D数组到1D数组

来自分类Dev

使用2D数组中的值索引1D数组

来自分类Dev

在C ++中将1D数组作为2D数组访问

来自分类Dev

我可以使用指针获取int类型的2D数组吗?

来自分类Dev

Java | 将2D int数组转换为2D char数组以进行println

来自分类Dev

将2d数组转换为其他类型的2d数组。int [,] => ushort [,]

来自分类Dev

c ++取消分配2d int数组错误

来自分类Dev

如何对1d和2d数组强制使用2d形状

来自分类Dev

numpy:使用2D索引数组进行2D数组访问

来自分类Dev

numpy:使用2D索引数组进行2D数组访问

来自分类Dev

根据int升序组织2D数组

来自分类Dev

通过2D数组python映射int

来自分类Dev

在C ++中使用1D数组初始化2D数组

来自分类Dev

在1d数组中填充2d数组

来自分类Dev

C ++ 2D数组-数组下标的错误无效类型'int [int]'

来自分类Dev

我可以使用Excel的溢出范围运算符从2D动态数组中提取单个1D列吗?

来自分类Dev

tf.gather_nd从1d索引数组中获取2d数组的值

来自分类Dev

切片并用1d列索引数组填充2d数组

来自分类Dev

tf.gather_nd从1d索引数组中获取2d数组的值

来自分类Dev

numpy:将索引的2D数组转换为1D数组以进行交集计算

来自分类Dev

在C ++中,2D数组在整体操作上是否比行为像2D数组的1D数组慢?

来自分类Dev

展平2D数组1D和

来自分类Dev

用1D numpy数组制作2D

来自分类Dev

快速2D数组包含2D数组

来自分类Dev

如何在Java中创建由2d int数组组成的2d数组?

来自分类Dev

从1D重塑为2D numpy数组后,如何返回元素的位置(索引)?

来自分类Dev

数组索引超出范围-2d至1d

Related 相关文章

热门标签

归档