按年龄排序名称

时间:2010-09-24 15:30:16

标签: 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;
}

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

C++ STL: Custom sorting one vector based on contents of another

5 个答案:

答案 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对。然后对这对进行排序。