一个简单的问题,我只想将一个映射初始化为空,而不是一个 nullptr。
const std::map<std::string, std::string>* emptyDictionary;
Run Code Online (Sandbox Code Playgroud)
我试过
const std::map<std::string, std::string>* emptyDictionary = {"", ""};
Run Code Online (Sandbox Code Playgroud)
但显然这是不对的。谢谢你们。
你根本忘了制作任何地图——你只是制作了一个指针!您可以使指针指向动态分配的映射:
const std::map<std::string, std::string>* emptyDictionary
= new std::map<std::string, std::string>;
Run Code Online (Sandbox Code Playgroud)
这张地图将真正是空的。如果您添加 initializer {{"", ""}},您可能会这样做,那么您实际上没有空映射,而是具有一个将空字符串映射到空字符串的元素的映射。
请注意,您永远无法通过 const 指针修改您的地图,因此您为什么要这样做有点令人怀疑。
还要注意,肆意的动态分配通常是一种糟糕的编程风格。几乎肯定有更好的方法来做您需要做的任何事情,或者,根据您的评论,您只是严重误解了某些事情:获取指针的最佳方法是获取现有对象的地址:
std::map<std::string, std::string> m;
foo(&m); // pass address of m as a pointer
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2623 次 |
| 最近记录: |