【发布时间】:2016-12-08 16:40:54
【问题描述】:
我试图对包含结构的向量进行排序。我必须根据结构中的成员进行排序。排序我使用 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”
我必须根据成员起始位对列表中的结构进行排序,但即使正确的升序向量也没有正确排序。
【问题讨论】:
-
startBits的类型是什么? -
这是什么“foreach”?我认为除了 c++、排序、向量、stl 之外还有其他东西。请标记正确的
-
@mash :感谢您的回复。 startBit 是一个整数。
-
@HumamHelfawi 那是 Qt
-
@Wagmare 你确定
startBits是一个整数吗? -.-