我有这些课程:SortBy
,Employee
,Company
和Database
。 Database
具有Database::Sorted
方法,该方法将使用SortBy
类并根据添加的密钥进行排序。 Database
有map<string,Company*> m_companies
个公司,这就是我需要排序的地图。我可以有一把钥匙或多把钥匙。
使用多个键进行排序(例如,首先按名称然后按年龄排序)不是一个大问题,但是,我不确定如何使用地图和对象作为OOP的初学者来解决这个问题。
让我说我有:
John, 27, 300, Washington
Jane, 20, 500, Fargo
Anna, 44, 150, Stanford
Kyle, 44, 150, Paris
然后:
assert( EqualLists( a.Sorted("Apple", CSortBy()
.AddKey(CSortBy::by_age,true)
.AddKey(CsortBy::by_address,true) ),
list<CEmployee> {
CEmployee("Jane", 20, 500, "Fargo", "Apple"),
CEmployee("John", 27, 300, "Washington", "Apple"),
CEmployee("Kyle", 44, 150, "Paris", "Apple"),
CEmployee("Anna", 44, 150, "Stanford", "Apple")
}
) );
在这种情况下,我将按年龄排序,然后按地址排序,两次都按升序排序。
最快的方法是什么?