<stdexcept>定义的异常类

exception 最常见的问题
runtime_error 只有在运行时才能检测出的问题
range_error 运行时错误:生成的结果超出了有意义的值域范围
overflow_error 运行时错误:计算上溢
underflow_error 运行时错误:计算下溢
logic_error 程序逻辑错误
domain_error 逻辑错误:参数对应的结果值不存在
invalid_argument 逻辑错误:无效参数
length_error 逻辑错误:试图创建一个超出该类型最大长度的对象
out_of_range 逻辑错误:使用一个超出有效范围的值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
我将为你提供一个参考解答,该解答使用了 unordered_map 来存储每个用户的总上网时间,并使用了 lambda 达式来定义排序规则。 ```cpp #include <vector> #include <unordered_map> #include <algorithm> #include <stdexcept> using namespace std; struct User_Activity { int id; int start_time; int end_time; }; vector<int> func6(const vector<User_Activity>& activities) { // 检查数据是否合法 for (const auto& act1 : activities) { if (act1.start_time > act1.end_time) { throw invalid_argument("invalid input"); } for (const auto& act2 : activities) { if (act1.id == act2.id && &act1 != &act2 && (act1.start_time < act2.end_time && act2.start_time < act1.end_time)) { throw invalid_argument("invalid input"); } } } // 计算每个用户的总上网时间 unordered_map<int, int> total_times; for (const auto& act : activities) { total_times[act.id] += act.end_time - act.start_time; } // 按照总上网时间降序排序 vector<pair<int, int>> pairs(total_times.begin(), total_times.end()); sort(pairs.begin(), pairs.end(), [](const pair<int, int>& p1, const pair<int, int>& p2) { return p1.second > p2.second; }); // 返回结果 vector<int> result; for (const auto& p : pairs) { result.push_back(p.first); } return result; } ``` 该函数首先检查输入数据是否合法,如果出现了开始时间大于结束时间或者两个上网行为时间重叠的情况,就抛出异常。然后,使用 unordered_map 来计算每个用户的总上网时间,并将结果存储在 vector<pair<int, int>> 中。最后,按照总上网时间降序排序,并返回用户 ID。 注意,该函数使用了 lambda 达式来定义排序规则,具体来说,按照 pair 的第二个元素降序排序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值