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);