C++11 对象指针列表的初始化

标签 c++ pointers c++11 initialization

编辑:这个结构是非常糟糕的设计,不要使用它!

是否可以在 C++11 中初始化指向对象的指针列表(同时初始化所有内容)?

例如,假设我要创建 my_list这是类型:

list<pair<string, map<string, string> *> *> .

我想用原始值初始化它。

list<pair<string, map<string, string> *> *> my_list = { ??? }

??? : 创建指向对原始字符串的指针和指向原始字符串映射的新指针。

(为什么我需要这样做:这个数据结构正在存储从文件中读取的配置,但如果找不到该文件,我需要在我的代码中使用默认值)

最佳答案

是的,当然:

list<pair<string, map<string, string> *> *> x {
    new pair<string, map<string, string> *>  {
        "hello", new map<string, string> { {"a", "1"}, {"b", "2"} } },
    new pair<string, map<string, string> *> {
        "world", new map<string, string> { {"a", "1"}, {"b", "2"} } },
};

这是糟糕的设计。不要这样做。

关于C++11 对象指针列表的初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22777068/

相关文章:

c++ - 无法从文件中读取一行的所有整数(ifstream)

c++11 评估顺序(未定义行为)

c++ - 在指针 : Reading 4 bytes given uint8_t pointer memory start location and size 中搜索值

C++ 清除指向动态分配对象的指针 vector 会导致异常?

c++ - 为什么int** ptr在访问ptr[i][j]时不指向与int arr[3][3]相同的地址?

c++ - 模板常量/非常量方法

c++ - 使用 vector 在初始化列表中 move 构造函数

c++ - 如何在 C++ 中用大小初始化 3 维 vector

c++ - 鼠标移动时如何从WM_MOUSEMOVE中获取每个像素坐标?

c++ - std::ios_base::ios_base(const std::ios_base) 是私有(private)的