c++ - 如何在 C++ 中将常量映射指针初始化为空?

标签 c++ pointers dictionary

简单的问题,我只想将一个映射初始化为空,而不是一个 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/

相关文章:

C++ : In how many ways compiler optimizes away our code?

c++ - 比较 char[] 和 char*

c++ - Qt 写入 QTextStream 指针

c++ - 在c++中获取模板类型的 'nested'模板参数的数量

c++ - 使用 glDrawRangeElements() 渲染无法正常工作

c++ - g++ 转储程序集输出不起作用

c++ - 创建链接列表的问题

python - Dict/Set 解析顺序一致性

c# - 这个非锁定的 TryGetValue() 字典访问线程安全吗?

javascript - 在这种情况下如何使用 GAS 进行字典化?