c++ - 按价格对文件中的产品进行排序
问题描述
我有 products.txt 文件:
Chocolate 5 250
Car 5000 1
Chips 3 350
...
如您所见,数据按顺序排列:名称、价格、数量。我需要按价格对产品进行分类。我已经确定了文件中有多少产品以及所有产品的总价值是多少。
我有一个结构:
struct product {
char name[20];
int price;
int quantity;
};
我尝试使用标准排序算法,但我不知道如何应用它。
解决方案
您应该首先读取数据,将其写入向量,对其进行排序,然后将排序后的数据以所需格式写入 *.txt 文件。该std::sort
函数允许您定义如何比较两个对象。你可以这样做:
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
struct product {
std::string name;
int price;
int quantity;
};
int main()
{
std::vector<product> products = {{"first",10000,1},{"second",100,1},{"third",10,1}};
std::sort(products.begin(),products.end(),[](const product &a, const product &b){
return a.price < b.price;
});
for (const auto &el : products)
std::cout << el.name << " " << el.price << std::endl;
}
这将打印:
third 10
second 100
first 10000
这是一个现场演示。
推荐阅读
- sql-server - 如何将数据从elasticsearch导入sql server数据库?
- ios - 如何在 Core Data 的 NSFetchedResultsController 中使用缓存
- c# - C# Web 应用程序剃须刀页面 - 编辑集合时如何克服 IndexOutOfRange 异常?
- xslt - BizTalk 映射:从 soapenv:Header 获取值
- javascript - 如何使用 TestCafe 访问应用程序操作?
- python - Python多条重复记录
- bash - EC2 用户数据未启动我的应用程序
- apache-kafka - 如何查看从某个 IP 地址连接的 kafka 客户端应用程序?
- swift - 将 CGImage 转换为 MTLTexture 而不进行预乘
- javascript - 我可以在悬停时使用 highcharts 列堆叠而不突出整个系列吗