Есть матрица в виде массива new T[cCols*cRows] по строчная (строка1, строка2, ...). Как бы ее сортировать посредством std::sort? Есть ли что готовое на эту тему? Или же std::qsort использовать?
======================================================
UPD: В среднем алгоритм получился такой (здесь писалось без проверки, у меня другие классы):
void M::sortByCol(uint iCol) {
    vector<pair<uint,uint>> listIdx;
    // first - откуда взять после сортировки,
    // second - куда поместить (обратный индекс)
    for (uint ii = 0; ii < cRows; ++ii)
        listIdx.push_back({ii,0});
    std::sort(listIdx.begin(), listIdx.end(),
           [&](const auto &p1, const auto &p2) -> bool {
               return getData(iCol, p1.first) < getData(iCol, p2.first); });
    for (uint ii = 0; ii < cRows; ++ii)
        listIdx[listIdx[ii].first].second = ii; // обратный индекс
    for (uint ii = 0; ii < cRows-1; ++ii) {
        auto &p = listIdx[ii];
        uint iSrc = p.first; // откуда берется в тек.строку
        if (iSrc == ii) continue;
        swapRows(ii, iSrc);
        listIdx[p.second].first = iSrc; // а прежние данные после будут
        listIdx[iSrc].second = p.second; //  браться уже отсюда.
    }
}
Как здесь упоминалось, колонку сортировки можно так же предварительно сложить в вектор для сортировки для ускорения, но это уже по желанию и необходимости.





