在什么样的情况下,我应该使用它的棘手形式?它会生成更快的二进制代码吗?如果我可以使用[] []表示法来完成这项工作,我是否还应该为某些原因做出额外的努力并用指针实现它?对于单个数据,我理解指针的需要.我特别要求二维数组而不是使用指针的一般意义.
在什么样的情况下,我应该使用它的棘手形式?
从来没有,除非你参加@MM'评论中提到的代码混淆比赛
它会生成更快的二进制代码吗?
不,发出的汇编指令应该与任何体面的编译器相同.
我是否还应该出于某种原因付出额外的努力并用指针实现它?
不.请使用标准容器或智能指针.不要使用原始的c风格数组和指针.
对于已知尺寸,最简单的方法是
std::array<std::array<T,5>,10> array2D;
Run Code Online (Sandbox Code Playgroud)
对于可以使用的尺寸变化的2D阵列
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));
}
Run Code Online (Sandbox Code Playgroud)
要优化2D数组以使用连续的动态内存块,请考虑编写一个小的包装类,将行和列偏移转换为内部值位置(例如,保持简单std::vector).