【问题标题】:Use vector or map for input of a class of students?使用矢量或地图作为一类学生的输入?
【发布时间】:2022-01-13 21:05:37
【问题描述】:

我正在编写一个用于存储来自用户输入的信息的代码,其中包含两个不同的字符串和一个字符。该程序应该接受有关学生的输入,直到用户给出stop 作为课程名称,然后询问新学生。当给定的学生姓名为 stop 时,所有对象都使用迭代器 for 循环打印出来。

一开始,我创建了一个这样的类:

class Student{
public:
  string Name;
  string Course;
  char Grade;
};

vector 可以用于所有输入吗?

我尝试过使用map,但我不确定如何使用。

【问题讨论】:

  • C++ 区分大小写。 C++ 中没有Class,与StringPublicChar 相同。由于没有使用正确的大小写,代码看起来像是属于另一种计算机语言。

标签: c++ class stdvector stdmap


【解决方案1】:

您可以使用vectormap 或任何其他容器来存储学生信息。你选择一个取决于你打算用它做什么?具体来说 - 您将如何访问这些信息?

此外,您的描述暗示一名学生可能参加多门课程,每门课程都有自己的成绩。你class Student 无法存储它。

【讨论】:

    【解决方案2】:

    如果您需要学生列表,请使用适合学生列表的数据结构。向量就是一个,如果您没有充分的理由不这样做,通常是您应该使用的那个。您提到了一张地图——将 keyvalue 相关联,因此当您拥有稍后可能想要查找的“key”时,它很有用。哪个适合您 - 或适合您的问题 - 取决于您实际想要对数据做什么。

    你可能会做这样的事情(不完整的代码:你需要填写包含和支持函数):

    std::vector<Student> all_students;
    while(true) {
      Student one_student;
      // Function reads from an input stream, puts information in Student&
      readStudentInformation(std::cin, one_student);
      if (reasonToStop(one_student)) { break; }
      else { all_students.append(one_student); }
    }
    

    您一次阅读一篇文章,然后将有效的内容添加到学生向量中。 (此示例代码假定您可以查找如何使用 Student&amp;(学生参考)来更新 one_student

    【讨论】:

      猜你喜欢
      • 2010-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多