在编译时推导出二维数组的一维
Deduce one dimension of 2D array at compile time
我有以下函数:
template <int size>
double** writeArray(double input[size][2]) {
double** Points = new double*[size];
for (int i = 0; i < size; ++i) {
Points[i] = new double[2];
}
for (int i = 0; i < size; ++i) {
Points[i][0] = input[i][0];
Points[i][1] = input[i][1];
}
return Points;
}
它从 double[size][2]
数组写入动态分配的double **
指针。
有没有办法自动推断size
,这样我就可以这样使用它:
double** Points = writeArray(Test1);
而不是:
double** Points = writeArray<2>(Test1);
是的!实际上,您可以在编译时推导出这两个维度。这个想法是编写一个模板函数,该函数通过引用将数组作为其参数。这可以防止C++将数组类型衰减为指针类型,从而导致其丢失数组大小。下面是一个示例:
template <typename T, size_t M, size_t N>
void howBigAmI(T (&array)[M][N]) {
std::cout << "You are " << M << " x " << N << " in size." << std::endl;
}
如果您愿意,您应该能够对其进行调整以满足您的需求。
你应该通过引用传递数组,如下所示:
template <int size>
double** writeArray(const double (&input)[size][2])
相关文章:
- 如何在C++中获取二维数组中最少的一列数?
- 将二维数组的所有元素插入到一维数组中
- C++语法差异:二维和一维数组(指针算术)
- 如何将 numpy 二维数组作为一种可以用C++读取的二进制格式存储在磁盘上
- 如何使用一维数组更改二维数组中的值?
- 使用二维数组作为一维数组是否正确?可能会导致未定义的行为左右?
- 将一维数组转换为二维数组
- 在一维数组中对二维进行排序
- 将一维数组的索引转换为二维数组
- 通过访问二维数组实现双线性插值的概念类似于一维数组
- 将二维数组传递到只需要一维数组的函数中(C++)
- 将一维数组指定为(C/C++)中二维(多维)数组的元素
- 在一维和二维数组之间进行选择
- 将一维数组转换为二维数组
- 按一列对二维数组进行气泡排序
- 如何使用malloc从一维数组转换为二维数组
- 如何在 c++ 中将一维数组中的值与二维数组中的值进行比较
- 将一维数组视为二维数组
- 用变量作为C++中二维数组的维数的问题
- 在c++中实现多维数组奇维的最佳方法