我可能没有很好地表达我的问题,但以下是我所指的一个示例。可以像这样创建一个unordered_map
:
unordered_map<string,int> map = {
{"A", 3},
{"B", 2},
{"C", 1}
};
我想知道如何创建一个能够像这样运作的自定义类?所有传递给该Map的值是如何解释的?我如何访问分配给它的数组中的每个单独值?事实上,这是否会是一个数组,因为这些值并不一定共享相同的类型?
我可能没有很好地表达我的问题,但以下是我所指的一个示例。可以像这样创建一个unordered_map
:
unordered_map<string,int> map = {
{"A", 3},
{"B", 2},
{"C", 1}
};
我想知道如何创建一个能够像这样运作的自定义类?所有传递给该Map的值是如何解释的?我如何访问分配给它的数组中的每个单独值?事实上,这是否会是一个数组,因为这些值并不一定共享相同的类型?
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" };
Q(std::initializer_list<Q>) {}
的意思是创建一个以Q
类型为元素的初始化列表,用于构造函数Q
。 - Jeffreystd::initializer_list
。 - kakkokonullptr
,以及用户定义字面量(看起来很像其他字面量)。所以,你的术语选择有点不准确。幸好你跟上了一个例子。 - JaMiT