在什么示例情况下我应该使用更棘手的形式?它会生成更快的二进制代码吗?如果我可以用 [][] 符号来完成这项工作,我是否还要出于某种原因付出额外的努力并用指针来实现它? 对于单个数据,我理解指针的需要。我特别要求二维数组,而不是关于使用指针的一般意义。
最佳答案
In what example situation I should use the trickier form of it?
从不,除非您正在参加 @M.M' comment 中提到的代码混淆竞赛
Does it generate a faster binary code?
不,发出的汇编指令应该与任何体面的编译器相同。
should I still make an extra effort for some reason and implement it with pointers?
没有。请改用标准容器或智能指针。避免使用原始的 C 风格数组和指针。
对于已知尺寸,最简单的方法是
std::array<std::array<T,5>,10> array2D;
对于大小不同的二维数组,您可以使用
size_t rows, columns;
std::cout << "Enter row and column size please > " << std::flush;
if(std::cin >> rows >> columns) {
std::vector<std::vector<T>> array2D(rows,std::vector<T>(columns));
}
要优化 2D 数组以使用连续的动态内存块,请考虑编写一个小包装类,将行和列偏移量转换为内部值位置(例如,在简单的 std::vector
中维护).
关于c++ - 为什么在 C++ 中使用 "*(*(array + i) + j)"而不是 "array[i][j]"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42036361/