在我的假設應用程序中,我從服務器收到酒店列表。根據字符串變量設置的規則進行排序
struct Hotel
{
std::string name; // e.g. Hilton, Ritz
int stars; // In range [0..5], 0 stands for "unrated"
int freeRoomCount; // Number of available rooms [0..N]
int parkingPlacesAvailable; // Number of parking places availalble [0..M]
}
std::vector<Hotel> hotels;
所有這些項目都顯示在一個簡單的列表視圖中。
我必須提供不同類型的排序。排序規則也由中央服務器規定。
排序規則如下:
std::string sortingRules;
// "s" - sort by stars count
// "f" - sort by free room count
// "p" - sort by parking places available
// The sortingRules string can be a combination of those values. E.g.:
// "ps" - first goes who has the most number of parking places available,
// then goes hotels who has more stars
// More combinations available:
// "s", "sf", "fp", "pf", "spf", "" etc.
// (16 possible combinations, the empty string means alphabetical sorting)
因此問題是:如何在C++解讀?枚舉和位掩碼值不起作用,因爲它們不提供「順序」控制。
我很好奇社區如何解決這類任務?我覺得有是解決此類問題的方法,這就是爲什麼我不想去直接和喜歡寫代碼:
if (sortingRules[0] == "s") ...
我使用Qt 5.4一起使用C++ 11。沒有提升。
你打算用你的結構變量做結構數組嗎? – bobtheboy
@bobtheboy我認爲沒有。我只是試圖給出一個通用的例子。實際上,我有一組具有提供諸如「int stars()」,「int freeRoomCount()」和「int parkingPlacesAvailable()」之類的接口的類。當我用這些類填充UI列表視圖時,我應該依賴「std :: string」排序規則。 – Dalamber
你可以使用std :: sort嗎? http://www.cplusplus.com/reference/algorithm/sort/展示瞭如何使用比較函數,並且可以在那裏使用排序規則字符串。 – donjuedo