一个向量C++中的两种类型的值

Tim*_*ong 5 c++ vector

假设我有一个班级学生的向量,但问题的要求表明我不能在构造函数中将等级放在一起,所以我将不得不解决它.

我有可能在一个向量槽中有两个值吗?

例如,Student类和字符串成绩是我的参数.

vector<Student*, string> Students;
Run Code Online (Sandbox Code Playgroud)

所以,在一天结束的时候,如果我对矢量进行测试,我应该在一个插槽中获得学生和成绩.

这有用吗?如果是这样,我如何push_back值?

否则,还有另一种方法吗?

Hum*_*awi 8

std::vector<std::pair<Student*, string>> students;
Run Code Online (Sandbox Code Playgroud)

甚至更好:

std::map<Student*, string> students;
Run Code Online (Sandbox Code Playgroud)

推动价值:

第一种情况:

students.push_back(std::make_pair(x,y));
Run Code Online (Sandbox Code Playgroud)

甚至更好(正如@snps建议的那样):

students.emplace_back(x, y);
Run Code Online (Sandbox Code Playgroud)

第二种情况:

students[x]=y;
Run Code Online (Sandbox Code Playgroud)

请注意,在第二种情况下,您无法添加具有相同Student*值的多个记录.如果你尝试它会写旧的.

  • 提示:您可以使用`students.emplace_back(x,y)`直接在原地构造对. (4认同)