如何在数组中按变量(int-最小到最大)对数组进行排序
How to sort arrays by variable (int - least to greatest) in arrays?
我有10个这样的数组:
#include <stdio.h>
#include <iostream>
#include <cstdlib>
#include <sstream>
using namespace std;
struct person
{
int age, i;
char name[20], dob[20], pob[20], gender[7];
};
int main ()
{
int i = 0;
person person[10];
for (i; i<10; i++)
{
cout << "Please enter your name, date of birth, place of birth, gender, and age, separated by a space.nFor example, John 1/15/1994 Maine Male 20: ";
scanf("%s %s %s %s %d", &person[i].name, &person[i].dob, &person[i].pob, &person[i].gender, &person[i].age);
printf("%s %s %s %s %d n", &person[i].name, &person[i].dob, &person[i].pob, &person[i].gender, person[i].age);
}
sort(person)
return 0;
}
如何按年龄对所有这些数组进行排序?年龄是一个整数,从最小到最大?谢谢
创建一个lambda作为
auto func = [](Person p1, Person p2)
{
return p1.age1 < p2.age2;
}
使用std::sort
对项目进行排序
std::sort(person.begin(),person.end(),func);
希望它能帮助
工作代码看起来像
#include <iostream>
#include <algorithm>
#include <array>
struct Person{
std::string name_, dob_, pob_;
char gender_;
int age_;
Person(std::string name,std::string dob, std::string pob,char gender,int age)
:name_(name),dob_(dob),pob_(pob),gender_(gender),age_(age)
{
}
void print() const
{
std::cout<<name_<<" , "<<dob_<<" , "<<pob_<<" , "<<gender_<<" , "<<age_<<'n';
}
};
int main()
{
std::array<Person,10> arr{
Person{"AA","12/12/12","BB",'M',24},
Person{"AA","12/12/12","BB",'M',23},
Person{"AA","12/12/12","BB",'M',22},
Person{"AA","12/12/12","BB",'M',21},
Person{"AA","12/12/12","BB",'M',20},
Person{"AA","12/12/12","BB",'M',34},
Person{"AA","12/12/12","BB",'M',33},
Person{"AA","12/12/12","BB",'M',32},
Person{"AA","12/12/12","BB",'M',31},
Person{"AA","12/12/12","BB",'M',30}
};
auto func = [] (Person p1,Person p2)
{
return p1.age_ < p2.age_;
};
std::sort(arr.begin(),arr.end(),func);
for(auto const & item:arr)
{
item.print();
}
}
使用#include<algorithm>
附带的std::sort(begin, end, comparator)
函数,并提供自定义比较器,在本例中为
bool comparator(Person i, Person j) {
return i.age < j.age;
}
std::sort(&Person[0], &Person[len], comparator);
//better alternative
std::sort(std::begin(Person), std::end(Person), comparator);
相关文章:
- 显示错误输出的简单数组排序程序
- C 使用单个函数对具有多种值类型的数组排序
- 2D数组排序,空格打乱顺序
- C 2D数组排序
- C++数组排序 - 将"bbba"和"0001"视为不正确排序的问题
- 数组排序功能
- CString 数组排序
- 简单的数组排序/检查 划分和征服版本
- C++ 中的多维数组排序
- 选择在++中对并行数组排序
- C++:二维指针数组排序:选择排序不适用于某些实例
- C++字符串数组排序
- C++中的指针数组排序算法
- 在VC++6中使用向量进行数组排序时出错,而在VC++2012中没有错误
- 将索引数组排序为主数组
- 数组排序、数组输入、数组输出
- C++数组排序,内存错误
- 在嵌入式系统上将数组排序功能从c++移植到c
- 基于其他int数组排序
- 多维数组排序c++奇怪行为