首页 > 解决方案 > 按价格对文件中的产品进行排序

问题描述

我有 products.txt 文件:

Chocolate 5 250
Car 5000 1 
Chips 3 350
...

如您所见,数据按顺序排列:名称、价格、数量。我需要按价格对产品进行分类。我已经确定了文件中有多少产品以及所有产品的总价值是多少。

我有一个结构:

struct product {
  char name[20];
  int price;
  int quantity;    
  };

我尝试使用标准排序算法,但我不知道如何应用它。

标签: c++filestructure

解决方案


您应该首先读取数据,将其写入向量,对其进行排序,然后将排序后的数据以所需格式写入 *.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

这是一个现场演示


推荐阅读