在c中按字母顺序对对象向量进行排序

新手上路,请多包涵

所以我创建了一个包含产品对象的向量。该产品有一个 int ID、字符串制造商和字符串产品名称。假设我通过这样做存储了一些产品

vector<product*>productlist;
 Product*p = new Product(123, "Sony", "C vaio laptop")
 Product*p1 = new Product(1234, "LG", "D 54 inch TV")
 Product*p2 = new Product(1235, "Lays", "A potato chips")
productlist.push_back(p);
productlist.push_back(p1);
productlist.push_back(p2);

我有一个名为 getproductname(){return productname;} 的方法,可用于获取产品名称,并且可以对产品名称进行排序,但之后我不知道如何继续,因为我不知道如何打印整个按产品名称的字母顺序排列对象。

现在我想按产品名称的字母顺序对 3 种产品进行 排序/打印。我该怎么做(排序部分)?样本输出:

产品按字母顺序排序

产品编号1:1235

产品制造商:莱士

产品名称:薯片//名称以A开头,所以它是第一个输出

产品 ID2:123

产品制造商:索尼

产品名称:C vaio 笔记本电脑

产品 ID3:1234

产品制造商:LG

产品名称:D 54寸电视//名称以D开头所以是最后一个

我试过插入 sort(productlist.begin(), productlist.end());但它只适用于带有字符串的向量而不是对象。

一开始问的问题太模糊/简单。已编辑!

原文由 J.Will 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 430
1 个回答

您也可以使用 lambda 实现

    std::string myNames[] = {"Henry","Tom","Jafar","Alice","Bob","Cindy","Clara","Michael"};

  std::vector<std::string> myvector (myNames, myNames+8); //create vector from array

    std::sort(myvector.begin(), myvector.end(), [](const std::string & a, const std::string & b) -> bool
    {
        return a < b;
    });

    std::cout << "Sorted vector:";
  for (std::vector<std::string>::iterator it=myvector.begin(); it!=myvector.end(); ++it)
        std::cout << ' ' << *it;

原文由 Sirop4ik 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题