gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 00:38:15 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com