使用 Qt/C++ 的排序算法 - 对结构的 QList 进行排序
Sorting algorithm with Qt/C++ - sort a QList of struct
我想知道 stl 或 Qt 中是否有某种算法可以对双精度数组进行排序并返回原始列表中排序项目的索引。例如。L = 1,2,5,3L_sort = 1,2,3,5指数 = 1, 2 , 4, 3
这样我就可以在之后计算 OtherList[Index](相对于原始列表 L,两个列表的顺序相同)。
最后,我想创建一个QList,每个MyStruct包含两个成员,一个与L中的元素具有相同类型的LType,另一个与OtherList中的元素具有相同类型的OtherType。然后对LType类型的成员进行排序。但是我有这个想法,我不知道如何在Qt中进行正确的操作。
感谢和问候
您可以将带有索引的数据成对存储...首先按值排序,第二次按索引排序...
QList<QPair<LType,int> > array;
for (int i = 0; i < 100; i++)
{
LType x = ...
array.append(qMakePair(x,i));
}
// Ordering ascending
qSort(array.begin(), array.end(), QPairFirstComparer());
.....
// Restoring start order
qSort(array.begin(), array.end(), QPairSecondComparer());
您只需要这些类:
struct QPairFirstComparer
{
template<typename T1, typename T2>
bool operator()(const QPair<T1,T2> & a, const QPair<T1,T2> & b) const
{
return a.first < b.first;
}
};
struct QPairSecondComparer
{
template<typename T1, typename T2>
bool operator()(const QPair<T1,T2> & a, const QPair<T1,T2> & b) const
{
return a.second < b.second;
}
};
相关文章:
- 将结构向量排序为子组
- 带有枚举方向/类型的气泡排序结构数组
- C++对结构向量进行排序
- 在C++中对结构向量进行排序时出现问题
- 按字母顺序对结构内数组变量中的名称进行排序
- 保持排序的数据结构,允许log N插入时间,并且可以返回我在log N中查找的元素的索引
- 使用选择排序对数组数据结构进行排序,但它不起作用
- 对结构向量进行两次排序
- C++使用QuickSort对数组结构进行排序
- 如何选择排序一些结构
- 对结构int成员进行排序
- 在排序链表中插入结构并将其写入二进制文件
- 对坐标结构的向量进行排序
- C++ 中优先级队列的结构排序条件
- 按姓氏合并排序结构,导致分段错误
- C++ 无效的比较器排序结构向量
- 排序结构的队列
- C++排序结构链表
- 包含指向下一个的指针的排序结构
- 用STL算法排序结构的动态数组