首页 > 解决方案 > 在结构中初始化给定大小的向量

问题描述

如果我在这样的结构之外初始化一个向量:

std::vector<int> grades(number_of_exams, 0);

一切似乎都很好。考试的数量在编译时是未知的,但在运行时是已知的。但是,当我尝试在结构中做同样的事情时

int number_of_exams;
struct Student
{
    std::string name;
    std::vector<int> grades(number_of_exams, 0);
};

Grades 成为成员函数而不是向量,从而破坏了我的计划。

如果我不初始化它:

struct Student
{
    std::string name;
    std::vector<int> grades;
};

一切似乎都很好,例如我可以

(*student).emplace_back(5)

但是在我的用例中,我需要有默认值 0(假设学生在考试中未显示为 0),并且我想在添加元素时避免复制向量(可能还有整个结构)。实际用例更复杂,但这个最小的例子说明了我的问题。如果我可以使用数组而不是向量,它可能会更好。免责声明:1)我是 c++ 新手 2)我不受旧标准的限制,我已经在代码的其他部分使用了 c++17。

标签: c++

解决方案


推荐阅读