C++排序

一、C++结构体排序   

  我将结构体 $result$ 存入在一个vector ${vResult}$ 中,最近需要在C++中按照结构体中的 $score$ 进行排序,在网上查找了一些资料,这里对采用的方法记录一下,方便以后使用。

1、引入头文件

#include <algorithm>

2、定义排序方法

struct result
{
float score;
...
}

bool
cmp (result a, result b) { return a.score < b.score; // < 按照升序排列, > 按照降序排列 }

3、sort()排序

int main()
{
    ...
    sort(vResult.begin(), vResult.end(), cmp);
    ...
}

 

二、 按给定索引排序

std::vector<int> sortedIds;
for (int i = 0; i < boundIds.size(); ++i) {
    sortedIds.push_back(i);
}  
// boundIds type is std::vector<std::pair<int, int>> std::sort(sortedIds.begin(), sortedIds.end(), [
&](const int& a, const int& b) { return ((boundIds[a].first + boundIds[a].second) < (boundIds[b].first + boundIds[b].second)); });

  std::vector<std::vector<int> > tmpArray;
  for (const int& idx : sortedIds) {
    tmpArray.push_back(tArray[idx]);
  }

tmpArray.swap(tArray);     

 

posted @ 2020-05-05 11:34  半夜打老虎  阅读(508)  评论(0编辑  收藏  举报