我希望得到一些幫助,以便在保留原始訂單上的關鍵字的同時實現排序值的更快速的方式。我寧願避免使用boost,也不需要進行穩定的排序。這是我提出的代碼,它可以工作,但速度很慢並且不夠靈活。排序完成後,我無需保留地圖。在保留原始索引的同時對價值進行排序的更快方法
struct column_record
{
int index;
float value;
};
// sort each column on value while retaining index
column_record *preprocess_matrix(float *value, int m, int n)
{
std::multimap<float,int> column_map;
column_record *matrix = new column_record[m*n];
for (int i=0; i<n; i++)
{
for (int j=0; j<m; j++)
{
column_map.insert(std::pair<float,int>(value[m*i+j],j));
}
int j = 0;
for (std::multimap<float,int>::iterator it=column_map.begin(); it!=column_map.end(); it++)
{
matrix[m*i+j].index = (*it).second;
matrix[m*i+j].value = (*it).first;
j++;
}
column_map.clear();
}
return matrix;
}
也許我有壞眼睛,但我沒有看到'分配後的矩陣',也沒有看到'列'聲明在哪裏可能他們的意思是一樣的,你混合起來? – Nobody