Cpp 在 header 中初始化 std::map

Cpp initialize std::map in header

我想在 my_cpp.h header 文件中初始化一个 std::map:

std::map<std::string, double> my_map;
my_map["name1"] = 0;
my_map["name2"] = 0;

但是出现编译错误:

error: ‘my_map’ does not name a type

有人可以解释为什么这对 C++ 新手不起作用吗? 谢谢

您不能像那样在 .h 文件中初始化地图。这些赋值语句需要放在 function/method 中。

否则,直接在其声明中初始化地图,例如

std::map<std::string, double> my_map = {
    {"name1", 0.0},
    {"name2", 0.0}
};

头文件只是一个声明,或者直接初始化映射。 您可以这样修改您的代码:

#include <map>
#include <string>

const std::map<std::string, double> my_map = {
  { "name1", 0 },
  { "name2", 0 }
};