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

标签 c++ arrays class object unordered-map

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

unordered_map<string,int> map = {
    {"A", 3},
    {"B", 2},
    {"C", 1}
};
我想知道的是我怎样才能让我自己的类能够以这种方式运行?例如,如何解释传递给 map 的所有值?如何访问我分配给它的数组中的每个单独的值?事实上,它甚至是一个数组,因为值不一定都共享一个类型?

最佳答案

您要找的类(class)是 std::initializer_list .它是一个容器,如 std::vector ,您可以轻松地以相同的方式对其进行迭代。只需定义接受 initializer_list 的公共(public)构造函数:

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

关于c++ - C++ 对象如何处理被分配数组文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69277267/

相关文章:

c++ - 有人能告诉我为什么我的 for() 循环不会一直计数吗?

c++ - 在 constexpr 数据数组中存储任意数据

c++ - 为什么 C++ 会这样?

python - Django 和 "Ordinary"Python 类成员和实例成员的区别?

java - Java中根据某些条件确定实现类

C++如何在已经加载后重新加载位图

c++ - 指向用于绑定(bind)的友元运算符重载的函数指针

java - 如何正确使用 Arrays.fill

iOS Swift 将值 append 到数组

c++ - 如何为嵌套指针结构动态分配内存?