1. 数组排序,元素为整数
void Print(vector<int>& nums)
{
std::cout << "Sorted numbers:" << std::endl;
for (size_t i = 0; i < nums.size(); i++)
{
std::cout << nums[i];
if (i != nums.size() - 1) {
std::cout << ", ";
}
}
std::cout << std::endl;
}
bool Lower(int left, int right)
{
return left <= right;
}
int main()
{
vector<int> nums = { 5,3,1,2,4 };
std::sort(nums.begin(), nums.end());
Print(nums);
std::sort(nums.rbegin(), nums.rend());
Print(nums);
std::sort(nums.begin(), nums.end(), Lower);
Print(nums);
}
2. 数组排序,元素为类
struct Student {
string name;
int score;
};
void PrintStudent(vector<Student> &students)
{
std::cout << "Sorted students:" << std::endl;
for (vector<Student>::const_iterator it = students.cbegin(); it != students.cend(); it++) {
cout << "name: " << it->name << " score: " << it->score << endl;
}
cout << endl;
}
bool compName(const Student &lftStu, const Student &rhdStu)
{
return lftStu.name <= rhdStu.name;
}
bool compScore(const Student& lftStu, const Student& rhdStu)
{
return lftStu.score < rhdStu.score;
}
bool compStudent(const Student& lftStu, const Student& rhdStu)
{
if (lftStu.score > rhdStu.score) {
return true;
}
else if (lftStu.score == rhdStu.score) {
return lftStu.name <= rhdStu.name;
} else {
return false;
}
}
int main()
{
vector<Student> students = {
{"Tam",55},
{"Tom",79},
{"LiLei",85},
{"Tomas",79},
{"Randy",99}
};
std::sort(students.begin(), students.end());
PrintStudent(students);
std::sort(students.begin(), students.end(),compName);
PrintStudent(students);
students = {
{"Tam",55},
{"Tom",79},
{"LiLei",85},
{"Tomas",79},
{"Randy",99}
};
std::sort(students.begin(), students.end(), compScore);
PrintStudent(students);
students = {
{"Tam",55},
{"Tom",79},
{"LiLei",85},
{"Tomas",79},
{"Randy",99}
};
std::sort(students.begin(), students.end(), compStudent);
PrintStudent(students);
}