我希望按年龄分类名称
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
struct Person{
std::string name;
int age;
};
struct by_age{
bool operator() (Person const &a,Person const &b){
return a.age>b.age;
}
};
int main(){
vector<Person>people;
for (int i=0;i<4;i++){
cin>>people[i].age>>people[i].name;
}
sort(people.begin(),people.end(),by_age());
for (int i=0;i<4;i++){
cout<<people[i].name<<people[i].age<<" ";
}
return 0;
}
但是这段代码有很多错误请帮忙 看看这个网站
C++ STL: Custom sorting one vector based on contents of another
答案 0 :(得分:5)
此代码的主要问题是向量为空,因此在设置值时会损坏内存。您需要明确设置矢量大小,或使用push_back()
向其添加值:
vector<Person> people(4);
答案 1 :(得分:3)
您需要初始化向量以告诉它应该包含多少元素。
vector<Person> people(4);
除此之外,请描述“错误”,以便人们可以帮助您。
答案 2 :(得分:0)
将年龄放在多图中,它们将为您排序。
答案 3 :(得分:0)
不要尝试使用已经为您制作的排序,而是查看冒泡排序。这是低效的,但这是每个人都学到的第一种。
作为一个注释,当你使用'namespace std'时,你不需要在任何代码前面加上'std'。
答案 4 :(得分:0)
您还使用C ++ STL对。然后对这对进行排序。