我有一个具有不同数据类型的结构列表,如下所示。
struct sample
{
int nVal;
string strVal;
string strName;
};
现在,根据nVal对列表进行排序,我使用了
bool sortList(const sample& a, const sample& b) // comparison function
{
return a.nVal< b.nVal;
}
std::sort(sample.begin(), sample.end(), sortList);
现在,我的要求是按照结构中的字符串值对相同的列表进行排序,但它不应该影响第一个排序,即就int值而言。请向我建议一种在不影响先前排序的情况下实现结构排序的方法。
提前致谢。
最佳答案
您想首先按nVal
排序,但是如果元素具有相同的nVal
,则按字符串排序。
支持juanchopanza支持C++ 11之前的编译器的答案的一种简单易懂的替代方法是:
bool sortList(const sample& a, const sample& b) // comparison function
{
if (a.nVal == b.nVal)
{
if (a.strVal == b.a.strVal)
{
return a.strName < b.strName;
}
else
{
return a.strVal < b.strVal;
}
}
else
{
return a.nVal < b.nVal;
}
}