小编Doo*_*ggy的帖子

对定义为向量<double>的矩阵进行排序

假设我有一个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)

c++ sorting stl qsort

8
推荐指数
1
解决办法
212
查看次数

使用 Fortran 中的 **int 参数调用 C 函数

假设我有一个带有以下 API 的 C 函数:

int c_function(int **a);
Run Code Online (Sandbox Code Playgroud)

假设 C 函数负责内存分配,我应该如何声明 Fortran 数组/指向数组的指针,并将其传递给函数?

c fortran fortran-iso-c-binding

5
推荐指数
1
解决办法
152
查看次数

标签 统计

c ×1

c++ ×1

fortran ×1

fortran-iso-c-binding ×1

qsort ×1

sorting ×1

stl ×1