目前,我可以将值输入QList并显示所有值,但想将相同的工作程序类型分组在一起。
例如,所有小时工在一起,所有薪水工人在一起,并且与佣金工人相同。

当前的迭代器代码:

EmployeeList::iterator i;
  for (i = EmpList.begin(); i != EmpList.end(); ++i)
  {

          cout << "Employee ID: " << (*i)->getID() << endl;
          cout << "Name: " << (*i)->getName() << endl;
          cout << "Type: " << (*i)->getPayment()->getType() << endl;
          cout << "Amount: " << (*i)->getPayment()->pay()<< endl;

  }


显示如下:
c&#43;&#43; - 如何遍历QList并将值分组在一起?-LMLPHP

最佳答案

如果您可以访问C ++ 14或C ++ 17,则可以:

std::sort(EmpList.begin(), EmpList.end(),
    [](const auto& lhs, const auto& rhs) {
        return lhs->getPayment()->getType() < rhs->getPayment()->getType();
     });


应该做你所需要的。

如果您使用的是C ++ 11,则:

std::sort(EmpList.begin(), EmpList.end(),
    [](const WhateverTypeIsInEmployeeList& lhs, const WhateverTypeIsInEmployeeList& rhs) {
        return lhs->getPayment()->getType() < rhs->getPayment()->getType();
     });


应该做的工作。

对于C ++ 98/03,您需要编写一个函数/类来代替lambda。

(顺便说一句;我假设getPayment()->getType()返回的类型具有operator<,它满足std::sort工作所需的严格弱排序要求)

关于c++ - 如何遍历QList并将值分组在一起?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52172607/

10-09 01:21