簡體   English   中英

對結構列表進行排序

[英]Sorting a list of structs

嗨,我有一個 C++ 代碼,其中有一個結構和結構列表。 在我的結構中,第一個元素是一個字符串。 在結構列表中,如何使用結構的第一個元素進行排序,以便在排序后列表中的所有元素將按字母順序排列? 請在下面找到一段示例代碼。 提前致謝。

struct samplestruct
{
    string Name;
    int Number
};
samplestruct obj_samplestruct;
vector<samplestruct> List;
obj_samplestruct.Name = "Tom";
obj_samplestruct.Number = 1;
list.push_back(obj_samplestruct);

obj_samplestruct.Name = "Jerry";
obj_samplestruct.Number = 2;
list.push_back(obj_samplestruct);

obj_samplestruct.Name = "Tom";
obj_samplestruct.Number = 3;
list.push_back(obj_samplestruct);

現在在上面的代碼中,我如何按照結構中的名稱進行排序,以便在列表中成員應按字母順序排列..

sort函數需要一些可以用兩個參數調用並返回一個 bool 的東西,這可能是一個 lambda 函數:

sort( list.begin( ), list.end( ), 
    []( const samplestruct& a, const samplestruct&b ){
    return a.Name < b.Name;
} );

默認情況下,它會查找operator< ,因此這也能正常工作:

bool operator<( const samplestruct& a, const samplestruct&b ){
    return a.Name < b.Name;
}
sort( list.begin( ), list.end( ) );

以下代碼應該可以解決您的問題:

struct samplestruct_lessThan
{
    bool operator()(samplestruct const & a, samplestruct const & b) const
    {
        return a.Name < b.Name;
    }
};

std::sort(object.begin(), object.end(), samplestruct_lessThan());

其他,

結構樣本結構{

 string Name;

 int Number;

 bool operator<( const samplestruct& a) const { 

 //just + 'const': maybe patch for the bug of GCC(clang-802.0.42)

 return Name < a.Name;

 }

};

種類( );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM