使用 C++ STL 對自定義物件的向量排序
你可以使用 C++ STL 函式 std::sort 來對自定義物件的向量進行排序。sort 函式有一個過載形式,它以 first、last、comparator 為引數。first 和 last 是容器第一個和最後一個元素的迭代器。comparator 是一個謂詞函式,可以用來告訴如何對容器進行排序。
示例
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
struct MyStruct {
int key;
string data;
MyStruct(int key, string data) {
this -> key = key;
this -> data = data;
}
};
int main() {
std::vector<MyStruct> vec;
vec.push_back(MyStruct(4, "test"));
vec.push_back(MyStruct(2, "is"));
vec.push_back(MyStruct(3, "a"));
vec.push_back(MyStruct(1, "this"));
// Using lambda expressions in C++11
sort(vec.begin(), vec.end(), [](const MyStruct& lhs, const MyStruct& rhs) {
return lhs.key < rhs.key;
});
for(auto it = vec.begin(); it != vec.end(); it++) {
cout << it -> data << endl;
}
}輸出
這將顯示如下輸出 −
this is a test
如果你使用的是較舊版本的 C++,你還可以傳遞函式引用 −
//define the function:
bool comparator(const MyStruct& lhs, const MyStruct& rhs) {
return lhs.key < rhs.key;
}
// pass it to sort:
sort(vec.begin(), vec.end(), &comparator);你也可以在類或結構中過載 < 運算子,並直接使用 sort(first, last) 形式。這樣,在進行排序時,它將使用此函式來比較項。
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP