Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 通过指针读取多维数组或向量是否安全?_C++_Arrays_Multidimensional Array - Fatal编程技术网

C++ 通过指针读取多维数组或向量是否安全?

C++ 通过指针读取多维数组或向量是否安全?,c++,arrays,multidimensional-array,C++,Arrays,Multidimensional Array,??这是定义的行为吗?很明显,我正在访问一个分配的区域 通过指针直接或间接读取数组元素是否会产生影响?是的,应该可以。唯一的原因是像素[1600]的大小适合大多数CPU架构的对齐条件 通常,在图像处理中,最简单的方法是将图像放入一维数组中,手动或借助封装访问的相应类进行访问像素的计算 例如,在您的情况下,指数计算为: std::cout << screen[0][10000][0]; 在您的情况下,rowSize将为1600。在大多数情况下,图像的宽度和高度在编译时是未知的,因此无

??这是定义的行为吗?很明显,我正在访问一个分配的区域


通过指针直接或间接读取数组元素是否会产生影响?

是的,应该可以。唯一的原因是像素[1600]的大小适合大多数CPU架构的对齐条件

通常,在图像处理中,最简单的方法是将图像放入一维数组中,手动或借助封装访问的相应类进行访问像素的计算

例如,在您的情况下,指数计算为:

std::cout << screen[0][10000][0];

在您的情况下,rowSize将为1600。在大多数情况下,图像的宽度和高度在编译时是未知的,因此无论如何都必须采用这种策略。

是的,它应该可以工作。唯一的原因是像素[1600]的大小适合大多数CPU架构的对齐条件

通常,在图像处理中,最简单的方法是将图像放入一维数组中,手动或借助封装访问的相应类进行访问像素的计算

例如,在您的情况下,指数计算为:

std::cout << screen[0][10000][0];

在您的情况下,rowSize将为1600。在大多数情况下,图像的宽度和高度在编译时是未知的,因此您无论如何都必须采用该策略。

程序格式不正确:
vector
type参数不能是数组类型(例如,由于分配器的要求)@KerrekSB好的,那么让我将向量交换为
std::array
或普通数组或指向数组的指针。一般规则是:1)不要访问超出边界的数组。2) 没有类型双关语。基本上,你的想法是不被允许的。我非常想结束这件事,因为这是一个骗局,但人们不会在意标签的差异;但是在这种情况下,语言要求相同的行为。程序的格式不正确:
vector
type参数不能是数组类型(例如,由于分配器的要求)@KerrekSB好的,那么让我将向量交换为
std::array
或普通数组或指向数组的指针。一般规则是:1)不要访问超出边界的数组。2) 没有类型双关语。基本上,你的想法是不被允许的。我非常想结束这件事,因为这是一个骗局,但人们不会在意标签的差异;然而,在这种情况下,语言要求相同的行为。这是错误的。只有一个
向量
,您似乎在反对
向量
。实际上,OP示例可以工作(至少使用
std::array
),但它违反了标准的严格规则。您完全正确。我要更新我的帖子。谢谢你的提示,这是错误的。只有一个
向量
,您似乎在反对
向量
。实际上,OP示例可以工作(至少使用
std::array
),但它违反了标准的严格规则。您完全正确。我要更新我的帖子。谢谢你的提示。
int pixelIdx = column + row * rowSize;