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

5

我可能没有很好地表达我的问题,但以下是我所指的一个示例。可以像这样创建一个unordered_map

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

我想知道如何创建一个能够像这样运作的自定义类?所有传递给该Map的值是如何解释的?我如何访问分配给它的数组中的每个单独值?事实上,这是否会是一个数组,因为这些值并不一定共享相同的类型?


5
Q(std::initializer_list<Q>) {} 的意思是创建一个以 Q 类型为元素的初始化列表,用于构造函数 Q - Jeffrey
5
请参阅std::initializer_list - kakkoko
这个回答解决了你的问题吗?initializer_list是什么? - alter_igel
C++的字面量包括整数字面量、字符字面量、浮点数字面量、字符串字面量、布尔字面量和nullptr,以及用户定义字面量(看起来很像其他字面量)。所以,你的术语选择有点不准确。幸好你跟上了一个例子。 - JaMiT
1个回答

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" };

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接