我有一个具有不同数据类型的结构列表,如下所示。

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;
    }
}

10-08 12:48