按年龄排序名称

use*_*463 2 c++

我希望按年龄分类

#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;
}
Run Code Online (Sandbox Code Playgroud)

但是这段代码有很多错误请帮忙看看这个网站

C++ STL:根据另一个的内容自定义排序一个向量

Ant*_*ams 5

此代码的主要问题是向量是空的,因此在设置值时会损坏内存.您需要显式设置矢量大小,或者使用push_back()向其添加值:

 vector<Person> people(4);
Run Code Online (Sandbox Code Playgroud)