假设我有一个A大小的方阵n,定义为a std::vector<double>.
std::vector<double> A(n*n);
Run Code Online (Sandbox Code Playgroud)
矩阵的元素以通常的方式访问:
double a_ij = A[i*n + j];
Run Code Online (Sandbox Code Playgroud)
我需要按照相对于第一列的升序对矩阵的行进行排序.
qsort函数允许我使用数组和函数指针来完成它,但我想找到一种方法来实现这一点,使用向量和std::sort.
另外,请注意,出于性能原因,我不希望将矩阵定义为向量矢量.
编辑:
我传递给qsort的函数:
static int comparisonFunction(const void* firstRow, const void* secondRow)
{
if (((double *)firstRow)[0] < ((double *)secondRow)[0]) return -1;
else if (((double *)secondRow)[0] < ((double *)firstRow)[0]) return 1;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
电话:
std::qsort(matrixArray, nbRows, sizeof(double)*nbRows, comparisonFunction);
Run Code Online (Sandbox Code Playgroud) 假设我有一个带有以下 API 的 C 函数:
int c_function(int **a);
Run Code Online (Sandbox Code Playgroud)
假设 C 函数负责内存分配,我应该如何声明 Fortran 数组/指向数组的指针,并将其传递给函数?