简单的问题,我只想将一个映射初始化为空,而不是一个 nullptr。
const std::map<std::string, std::string>* emptyDictionary;
我试过了
const std::map<std::string, std::string>* emptyDictionary = {"", ""};
但显然那是不对的。 谢谢大家。
最佳答案
您根本忘记制作任何 map ——您只是制作了一个指针!您可以使指针指向动态分配的映射:
const std::map<std::string, std::string>* emptyDictionary
= new std::map<std::string, std::string>;
这张 map 真的是空的。如果您添加初始化程序 {{"", ""}}
,您可能会这样做,那么您实际上并没有一个空映射,而是一个包含一个映射空映射的元素的映射字符串为空字符串。
请注意,您永远无法通过 const 指针修改 map ,因此您为什么要这样做有点疑问。
另请注意,随意的动态分配通常是一种糟糕的编程风格。几乎可以肯定有更好的方法来做任何你需要做的事情,或者,根据你的评论,你只是严重误解了一些事情:获得指针的最好方法是获取 address of 一个现有对象:
std::map<std::string, std::string> m;
foo(&m); // pass address of m as a pointer
关于c++ - 如何在 C++ 中将常量映射指针初始化为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11352585/