2016-07-22 76 views
1

您好,我有結構排序功能,現在我只是想知道的是,有更簡單的方法做到這一點:C++結構或數組排序

void Sorting(Sheeps v[],int all){ 

    for(int a =0; a < all; a++){ 
     for(int b = a+1; b < all; b++){ 
      if(v[b].dna_mach_rate > v[a].dna_mach_rate){ 
       v[4].dna_mach_rate = v[a].dna_mach_rate; 
       v[a].dna_mach_rate = v[b].dna_mach_rate; 
       v[b].dna_mach_rate = v[4].dna_mach_rate; 
      } 
     } 
    } 
    v[4].dna_mach_rate = 0; 
} 

所以這個功能只需要運行槽結構,如果從最大到最小的替代值,但這是很多代碼來做到這一點,所以我想知道是否有像「php」或「javascript」,「ushort」或類似的功能或更好的方法來排序數組或結構 這是我如何在「javascript」中執行操作:

arrayname.sort(function(a, b){return b.speed - a.speed}); 

an d在PHP幾乎相同的,所以,如果有相似或甚至更好的方式在C++

+4

你的意思是「排序」嗎? – Yakk

+0

yes sorr會編輯 – yahoo5000

+0

[std :: swap](http://www.cplusplus.com/reference/algorithm/swap/)或許 –

回答

3
std::sort(v, v+all, [](Sheeps const& lhs, Sheeps const& rhs){ 
    return lhs.dna_mach_rate < rhs.dna_mach_rate; 
}); 

在C++該取長度all陣列v並將它們放在順序排序排序陣列或結構我想知道,使得最低的dna_mach_rate先走。

您首先需要#include <algorithm>。這也使用C++ 11功能,但C++ 11在這一點上已經有5年了。

+2

但是海報並沒有交換結構的其餘部分 –

+0

我得到錯誤,當我嘗試使用它https://jsfiddle.net/ptL3kwn0/1/ – yahoo5000

+0

@ yahoo5000 [現場示例](http://coliru.stacked-crooked .com/a/e2cc74a63859b11d) - 我不知道什麼編譯器jsfiddle用於C++代碼。 – Yakk