按对象变量对对象的映射进行排序

时间:2017-04-23 16:21:20

标签: c++ list sorting maps

我有这些课程:SortByEmployeeCompanyDatabaseDatabase具有Database::Sorted方法,该方法将使用SortBy类并根据添加的密钥进行排序。 Databasemap<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")
                        }
                        ) );

在这种情况下,我将按年龄排序,然后按地址排序,两次都按升序排序。

FULL CODE HERE

最快的方法是什么?

0 个答案:

没有答案