c++ - 对 vector 的相同元素进行升序排序

标签 c++

bool third_parameter(const pair<long long,long long> &a,
                       const pair<long long,long long> &b)
    {
        return a.second>b.second;
    }

int main (){
        sort(vec.begin(), vec.end(), third_parameter );
    return 0;
    }

我在这里使用了这种排序技术,但是当涉及到 vector 的相同元素时,这并不能保证我有任何事情。我正在使用一个 vector 对,它在 .first 中有一个递增的数字,在 .second 中有一个 int。当它找到两个相等的 .second 元素时,我希望按 .first 的升序对它们进行排序。

最佳答案

std::tie 仍然可以在这种情况下使用,只需注意正确排序变量即可。

bool custom_compare(const pair<long long, long long> &a,
                    const pair<long long, long long> &b)
{
    return std::tie(b.second, a.first) < std::tie(a.second, b.first);
}

std::sort(vec.begin(), vec.end(), custom_compare);

我们使用积分的另一个选项是“x 的降序”是“-x 的升序”:

所以

bool custom_compare(const pair<long long, long long> &a,
                    const pair<long long, long long> &b)
{
    return std::make_tuple(-a.second, a.first) < std::make_tuple(-b.second, b.first);
}

关于c++ - 对 vector 的相同元素进行升序排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54444536/

相关文章:

c++ - 如何将 Windows 中的 CodeBlocks MingW 编译到 Ubuntu 或 Centos

c++ - Game Of Life 程序中的混淆错误

c++ - 如果没有显卡,谁来运行 OpenGL 着色器

c++ - Qt 连接不工作

c++ - 如何读取字符或字符串并自动转换为数字(C/C++)?

c++ - 防止 C 样式数组指针的向上转换

c++ - 双端队列从前面删除元素并将它们放在后面

C++:如何将字符串中的每个字符转换为相应的字符?

c++ - 没有将指针列表正确传递给函数

简单示例中的 C++ 多态性