You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

字典Setting键排序:同类别按索引排序,其余按描述排序

解决方案

你的现有比较器逻辑存在问题:只要两个元素的mCategory相同就按mIndex排序,这会导致同一类别下的唯一类别元素(mIndex=-INF)被强制排在非唯一类别元素前面,哪怕它的描述字典序更大,违背了“整体按描述排序”的核心需求。

正确的逻辑应该是:仅当两个元素都属于非唯一类别组(即mIndex≠-INF且mCategory相同)时,才按mIndex排序;其他所有情况(包括同类别但其中一个是唯一类别、不同类别)都按描述的不区分大小写排序。

修改后的代码如下:

bool operator()(const myStruct& rLeft, const myStruct& rRight) const
{
    bool leftIsNonUnique = (rLeft.mIndex != -INF);
    bool rightIsNonUnique = (rRight.mIndex != -INF);
    
    // 同一非唯一类别组内,按mIndex升序排序
    if (leftIsNonUnique && rightIsNonUnique && rLeft.mCategory == rRight.mCategory)
    {
        return rLeft.mIndex < rRight.mIndex;
    }
    // 其他情况按描述不区分大小写排序
    else
    {
        return rLeft.mDescription.CompareNoCase(rRight.mDescription) < 0;
    }
}

这样既保证了整体排序符合描述的字典序,又避免了非唯一类别组内出现Book 10排在Book 1前面的问题;同时,同一类别下的唯一元素和非唯一元素也会按照描述的正确顺序排列。

内容的提问来源于stack exchange,提问作者Arannya Monzur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 15:35:54