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



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

unordered_map<string,int> map = {
{"A", 3},
{"B", 2},
{"C", 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" };

最新更新