C++ 对象如何处理分配数组文字?

Cap*_*_D1 5 c++ arrays unordered-map class object

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

unordered_map<string,int> map = {
    {"A", 3},
    {"B", 2},
    {"C", 1}
};
Run Code Online (Sandbox Code Playgroud)

我想知道如何制作自己的类可以以这种方式运行?例如,如何解释传递给映射的所有值?如何访问我分配给它的数组中的每个单独值?事实上,它是否会是一个数组,因为这些值不一定都共享一个类型?

h22*_*h22 4

您要找的班级是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" };
Run Code Online (Sandbox Code Playgroud)