【问题标题】:How do C++ objects handle being assigned an array literal?C++ 对象如何处理被分配一个数组字面量?
【发布时间】:2021-11-15 12:14:30
【问题描述】:

我可能没有很好地表达这个问题,但这里有一个例子来说明我的意思。 unordered_map 可以这样创建:

unordered_map<string,int> map = {
    {"A", 3},
    {"B", 2},
    {"C", 1}
};

我想知道的是如何让我自己的类能够以这种方式运行?比如,所有传递给地图的值是如何解释的?如何访问我分配给它的数组中的每个单独的值?事实上,它甚至会是一个数组,因为这些值不一定都共享一个类型?

【问题讨论】:

标签: c++ arrays class object unordered-map


【解决方案1】:

您要查找的课程是std::initializer_list。它是一个容器,就像std::vector,你可以用同样的方式轻松地迭代它。只需定义采用initializer_list 的公共构造函数:

class FromList {
public:
  FromList(std::initializer_list<std::string> list) {
    for (const auto &passed_list_entry: list) {
       // We have the values here
    }
  }
};

// And using it:
FromList v = { "entry_1", "entry_2", "entry_3" };

【讨论】:

    猜你喜欢
    • 2016-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多