📅  最后修改于: 2023-12-03 14:59:51.719000             🧑  作者: Mango
本文介绍了一个使用 C++ 编写的二进制排序程序。该程序可以对存储在二进制文件中的数据进行排序,并将排序后的结果输出到新的二进制文件中。
以下是一个简单的二进制排序程序的实现示例:
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
struct Data {
int id;
std::string name;
double value;
};
bool compareData(const Data& a, const Data& b) {
return a.value < b.value;
}
int main() {
std::ifstream inputFile("input.bin", std::ios::binary);
std::ofstream outputFile("output.bin", std::ios::binary);
if (!inputFile || !outputFile) {
std::cout << "无法打开文件" << std::endl;
return 1;
}
std::vector<Data> dataList;
Data input;
while (inputFile.read(reinterpret_cast<char*>(&input), sizeof(Data))) {
dataList.push_back(input);
}
std::sort(dataList.begin(), dataList.end(), compareData);
for (const auto& data : dataList) {
outputFile.write(reinterpret_cast<const char*>(&data), sizeof(Data));
}
inputFile.close();
outputFile.close();
std::cout << "排序已完成" << std::endl;
return 0;
}
iostream
用于输入输出,fstream
用于文件操作,vector
用于存储数据,algorithm
用于排序算法。Data
结构体用于存储数据。该结构体包含 id
、name
和 value
三个字段。compareData
,用于在排序中比较两个 Data
对象的 value
值。vector
对象 dataList
用于存储读取到的数据。input
用于读取数据。ifstream
的 read
函数读取二进制文件中的数据,并将数据存储到 dataList
中。std::sort
函数对 dataList
进行排序,使用自定义的比较函数 compareData
进行排序。ofstream
的 write
函数将排序后的数据写入到输出二进制文件中。input.bin
中。注意:文件中的数据类型必须与 Data
结构体的定义一致。input.bin
文件,并使用 value
字段进行排序。output.bin
文件中。以上就是一个简单的 C++ 二进制排序程序的实现示例,你可以根据自己的需求进行修改和扩展。