【发布时间】:2018-04-05 13:21:27
【问题描述】:
我正在寻找一种方法来仅初始化 std::map 中的第一个值,然后根据键初始化第二个值。这是我的代码:
#pragma once
#include <string>
#include <map>
class Student
{
public:
Student(
double Score_Maths,
double Score_Eng,
double Score_Chem,
double Score_Bio,
double Score_His
);
~Student();
private:
std::string Surname;
std::map<std::string, double> Subject_Scores = { {"Maths"}, {"English"}, {"Chemistry"}, {"Biology"}, {"History"} };
};
我想要做的是,已经在类中拥有这些键,然后使用构造函数初始化值,但是在初始化映射时当然会显示错误,有什么帮助吗?
【问题讨论】:
-
您应该能够为每个值提供默认值:
std::map<std::string, double> Subject_Scores = { {"Maths", 0.0}, {"English", 0.0}, {"Chemistry", 0.0}, {"Biology", 0.0}, {"History", 0.0} }; -
@UlrichEckhardt 虽然这段代码技术上可能会更小一些,但我想说这已经是一个相当不错的 MCVE。
-
所以不使用一些预先分配的值是不可能的?
-
@Nick 是的。您不能分配没有值的键,反之亦然
-
从技术上讲,如果您将值设为
optional<double>,它实际上可能没有值,而不仅仅是一个神奇的“无效”值。但这似乎很复杂,没有太多回报。