c++ - 在结构中初始化给定大小的向量
问题描述
如果我在这样的结构之外初始化一个向量:
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。
解决方案
推荐阅读
- javascript - 问题javascript函数将字符串值转换为int删除第一个零
- java - 使用junit在spring测试中加载属性文件
- javascript - 显示文件下载对话框时关闭当前弹出窗口
- webpack - 来自 webpack 的 DataCloneError
- spring-boot - 面对 java.lang.IllegalArgumentException: Not a managed type error in Spring boot
- angularjs - 如何使 ng-model 动态化?
- javascript - 将一个线对象拆分为多线对象
- css - 背景图像自动缩放
- perl - 如何在 Perl 中解析多行记录?
- java - Javafx 图表中的错误:添加了重复系列。为什么?