【问题标题】:How to get a objects age inside a vector?如何获取向量内的对象年龄?
【发布时间】:2019-10-11 17:01:00
【问题描述】:

我有一个存储 Student 对象的向量

std::vector<Student> vec;

Student 已经初始化了

Student(std::string nameIs, int ageIs) : name(nameIs), age(ageIs){}

对象如下图所示放入向量中

Student a;
a.addStudent(Student("john" , 24));
a.addStudent(Student("Sam" , 23));
a.addStudent(Student("Bob" , 28));

我想得到向量内的第二个对象,我想知道它的年龄。我已经有一个getAge() 方法。我对 C++ 很陌生,所以我对这个概念感到困惑。如何返回vector 中的a 对象,然后检查它的age 是什么?

【问题讨论】:

  • 什么是A类?
  • 向量可以像数组一样被索引。就像数组一样,索引是从零开始的,这意味着第二个元素的索引是1
  • 抱歉Oblivion,这是一个错误,已更正
  • 如果我将变量分配给 vec[i],它的类型是什么?
  • vec[0].getAge() 不是您要找的吗?

标签: c++ object vector


【解决方案1】:

我想获取向量内的第二个对象,我想获取它的年龄...如何返回向量内的对象,然后检查它的年龄?

与普通的 C 样式数组一样,std::vector 定义了一个 0 索引的 operator[],它返回对给定索引处元素的引用,例如:

int age = vec[1].getAge();

【讨论】:

    【解决方案2】:

    简短回答:这与您从“学生”的对象中读取“年龄”的方式完全相同。

    加长版: a.addStudent(Student("john" , 24))实际上调用了“Student”类的构造函数,而你添加的是Student类的一个对象,而不是直接的年龄和姓名。所以当你从这个存储这个对象的向量中检索东西时——你会得到一个“学生”类的对象。要从此对象中读取“年龄”,您可以使用任一类方法,或者如果它具有年龄的公共数据成员,您可以使用 object_name.age 直接读取它(即 vec[1].age 在您的情况下,因为您需要列表中的第二项)。

    如果您有一个方法可以直接返回您提到的“getAge”之类的年龄 - 它应该也可以这样做。

    https://www.geeksforgeeks.org/constructors-c/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多