提交时间:2025-03-18 20:58:13
运行 ID: 313120
#include <iostream> #include <vector> #include <algorithm> #include <cmath> // 用于计算绝对值 // 定义一个结构体来存储整数及其绝对值 struct IntWithAbs { int value; int absValue; IntWithAbs(int val) : value(val), absValue(std::abs(val)) {} }; // 比较函数,用于排序 bool compareByAbsThenValue(const IntWithAbs& a, const IntWithAbs& b) { if (a.absValue == b.absValue) { return a.value < b.value; // 如果绝对值相等,则按原数值排序 } return a.absValue < b.absValue; // 否则,按绝对值排序 } int main() { int a, b, c; std::cout << "输入三个整数: "; std::cin >> a >> b >> c; // 创建包含三个整数的向量,每个整数都存储为IntWithAbs对象 std::vector<IntWithAbs> vec = {IntWithAbs(a), IntWithAbs(b), IntWithAbs(c)}; // 使用自定义比较函数排序 std::sort(vec.begin(), vec.end(), compareByAbsThenValue); // 输出排序后的结果 for (const auto& item : vec) { std::cout << item.value << " "; } std::cout << std::endl; return 0; }