首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C++按数值对tuple<string、float>的向量进行排序,然后按字典顺序排序

在C++中,可以使用std::sort算法对tuple<string, float>的向量进行排序。首先,我们需要定义一个比较函数,该函数将首先按照数值进行排序,然后按照字典顺序进行排序。

代码语言:txt
复制
#include <iostream>
#include <vector>
#include <tuple>
#include <algorithm>

bool compare(const std::tuple<std::string, float>& a, const std::tuple<std::string, float>& b) {
    // 按照数值进行排序
    if (std::get<1>(a) < std::get<1>(b)) {
        return true;
    }
    else if (std::get<1>(a) > std::get<1>(b)) {
        return false;
    }
    
    // 数值相等时,按照字典顺序进行排序
    return std::get<0>(a) < std::get<0>(b);
}

int main() {
    std::vector<std::tuple<std::string, float>> vec = { {"apple", 3.5}, {"banana", 2.0}, {"orange", 3.5}, {"grape", 2.5} };
    
    std::sort(vec.begin(), vec.end(), compare);
    
    for (const auto& item : vec) {
        std::cout << std::get<0>(item) << " " << std::get<1>(item) << std::endl;
    }
    
    return 0;
}

上述代码中,我们定义了一个名为compare的比较函数,该函数接受两个tuple<string, float>类型的参数ab。首先,我们通过std::get<1>(a)std::get<1>(b)分别获取到两个tuple中的数值部分,然后进行比较。如果a的数值小于b的数值,我们返回true,表示a应该排在b之前;如果a的数值大于b的数值,我们返回false,表示a应该排在b之后。如果两个数值相等,我们再通过std::get<0>(a)std::get<0>(b)获取到两个tuple中的字符串部分,然后进行字典顺序的比较,返回比较结果。

main函数中,我们创建了一个vector,其中包含了四个tuple<string, float>元素。然后,我们使用std::sort算法对该向量进行排序,传入我们定义的比较函数compare作为排序的依据。最后,我们遍历排序后的向量,并输出每个元素的字符串和数值部分。

这样,我们就可以按照数值和字典顺序对tuple<string, float>的向量进行排序了。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Python 练习100题---No.(1-20)---附其他题目解答链接

    github展示python100题 链接如下: https://github.com/zhiwehu/Python-programming-exercises/blob/master/100%2B%20Python%20challenging%20programming%20exercises.txt 以下为博主翻译后题目及解答,答案代码分为两个,第一条为博主个人解答(Python3),第二条为题目所提供答案(Python2) ……………………………………………………………………………… 本部分为题目1-20,等级难度1-3升序; 题目21-40链接:https://blog.csdn.net/weixin_41744624/article/details/103511139 题目41-60链接:https://blog.csdn.net/weixin_41744624/article/details/103575741 题目61-80链接: https://blog.csdn.net/weixin_41744624/article/details/103607992 题目81-98链接:https://blog.csdn.net/weixin_41744624/article/details/103646520 经检测题库去除重复只有98题啦(欢迎评论添加好题目)~ ……………………………………………………………………………… 1、问题:

    02
    领券