1.c++STL中只有list自带了排序函数:
(1).若list中存放的是int类型或者string类型,直接利用sort即可:
list <int> list1;
};
return a.num>b.num;//从大到小排序
};
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int cmp(int a,int b){
return a > b;//按降序排序
}
int main(){
vector<int> vec;
vec.push_back(324);
vec.push_back(344);
vec.push_back(2134);
vec.push_back(23);
vec.push_back(12);
vec.push_back(134);
vec.push_back(987);
sort(vec.begin(),vec.end(),cmp);
vector<int>::iterator it;
for(it = vec.begin();it != vec.end();it++)
cout<<*it<<" ";
cout<<endl;
return 0;
}
3.STL中的set排序:其中set本身是自带排序的,默认按升序进行排序:
若定义set中存储的为结构体:
#include <iostream>
#include <string>
#include <set>
using namespace std;
struct intComp {
bool operator() (const int& lhs, const int& rhs) const{
return lhs > rhs;
}
};
struct strComp
{
bool operator() (const string& str1, const string& str2) const {
return str1.length() < str2.length();
}
};
int main() {
int a[] = {10, 20, 30, 40, 50};
set<int, intComp> s1(a, a + 5);
for (auto it = s1.cbegin(); it != s1.cend(); it++)
{
cout << *it << " ";
}
cout << endl;
string b[] = {"apple", "banana", "pear", "orange", "strawberry"};
set<string, strComp > s2(b, b + 5);
for (auto it = s2.cbegin(); it != s2.cend(); it++)
{
cout << *it << " ";
}
cout << endl;
system("pause");
return 0;
}