std::矢量排序不起作用
std::vector sort is not working
我试图对包含向量的结构进行排序。我必须根据结构中的成员进行排序。排序我使用std::sort函数和参数作为结构引用和成员来检查条件。
QStringList keys = m_pLDFFrameMap.keys();
foreach (QString key, keys) {
LDFFrameData frmData = m_pLDFFrameMap.value(key);
vector<LDFSignalsData> myList;
QList <LDFSignalsData>sigData = frmData.m_SignalDataList;
for (int i =0; i < sigData.size(); i++) {
LDFSignalsData signal = sigData.at(i);
qDebug()<<"Before signal:"<<signal.startBits<<"Name:"<<signal.frameSignals;
myList.push_back(signal);
}
foreach (LDFSignalsData sig1, myList) {
qDebug()<<"Signal act data:"<<sig1.startBits<<"Name:"<<sig1.frameSignals;
}
sort(myList.begin(), myList.end(), sortingSignals);
for(int i =0; i < myList.size(); i++) {
qDebug()<<"After sorting signal:"<<myList.at(i).startBits<<"Name:"<<myList.at(i).frameSignals;
}
}
排序函数sortingSignals()是
bool sortingSignals(const LDFSignalsData &first, const LDFSignalsData &second)
{
if (first.startBits < second.startBits)
return true;
else
return false;
}
但是输出没有如所期望的那样到来。这是我的日志信息
信号动作数据:"0"名称:"LIN_Comm_Status"
信号动作数据:"1"名称:"Motor_Relay_Fault"
信号动作数据:"2"名称:"Hall_Fault"
信号动作数据:"3"名称:"Thermal_Protection_Active"
信号动作数据:"4"名称:"Motor_Reversing"
信号动作数据:"5"名称:"Uncalibration_Mode"
信号动作数据:"6"名称:"SS_LINBus _com_state"
信号动作数据:"8"名称:"Switch_Input_Status"
信号动作数据:"16"名称:"PosnSts1_Glass"
信号动作数据:"32"名称:"App_Version_DayNo"
信号动作数据:"40"名称:"App_Version_WeekNo"
信号行为数据:"48"名称:"App_Version_Year"
信号动作数据:"24"名称:"PosnSts2_Blind"
信号动作数据:"11"名称:"TSts_Glass"
信号动作数据:"12"名称:"TSts_Blind1"
分拣后
分拣信号后:"0"名称:"LIN_Comm_Status"
分拣信号后:"1"名称:"Motor_Relay_Fault"
分拣信号后:"11"名称:"TSts_Glass"
分拣信号后:"12"名称:"TSts_Blind1"
分拣信号后:"16"名称:"PosnSts1_Glass"
分拣信号后:"2"名称:"Hall_Fault"
分拣信号后:"24"名称:"PosnSts2_Blind"
分拣信号后:"3"名称:"Thermal_Protection_Active"
排序信号后:"32"名称:"App_Version_DayNo"
分拣信号后:"4"名称:"Motor_Reversing"
排序信号后:"40"名称:"App_Version_WeekNo"
排序信号后:"48"名称:"App_Version_Year"
分拣信号后:"5"名称:"Uncalibration_Mode"
排序信号后:"6"名称:"SS_LINBus _com_state"
分拣信号后:"8"名称:"Switch_Input_Status"
我必须根据成员起始位对列表中的结构进行排序,但即使是正确的升序向量也没有正确排序。
您的排序结果是字符序列,例如"2"<"24"<"3"。
我相信您的"startBits"类似于std::string
,而您的sortingSignals()
比较的是string
而不是值。
所以你的这种方式是有效的,但在另一方面。
为了真正获得您想要的结果,您可以将string
转换为int
,并比较sortingSignals()
中的int
值
- 尝试使用C++中的模板进行BST排序,但在使用随机字符串进行测试时不起作用
- 我的C++合并排序代码不起作用。我在这里错过了什么?
- 使用选择排序对数组数据结构进行排序,但它不起作用
- c++ 选择排序在特定情况下不起作用
- 为什么当我们使用等于'='符号比较器函数时,c ++的内置排序函数不起作用?
- C++插入排序错误功能不起作用
- 我正在编写一个拆分为 3 的合并排序,我不知道为什么它不起作用
- 为什么我的替代排序算法不起作用?
- 堆排序它不起作用或计算不正确
- C++ ceil() 在傀儡排序中不起作用
- 合并两个排序的列表 - 不起作用
- 排序功能不起作用
- 气泡排序不传递数据或不起作用
- 外壳排序算法不起作用
- 排序不起作用 c++
- 我已经在 C++ 中实现了合并排序。它没有错误,但不知何故不起作用
- 在 C++ 中使用 10 个随机整数的数组进行气泡排序不起作用
- 合并排序在 C++ 中不起作用
- 合并排序wih pthreads在C 中不起作用
- 当中间元素选择为枢轴时,快速排序C 不起作用