有一个可迭代的容器,在编译时可以知道成员

时间:2018-07-31 00:18:12

标签: c++

假设我有一个Person类中包含15-20个float变量。 每个浮点变量的计数都不同(例如:var_0:count_cats,var_1 = count_dogs,...,var_19 = count_X)。

我目前在这样的类中有这些变量:

class Person {
double count_cats;
double count_dogs;
etc...
}

我想知道是否可以将这些变量放入一种容器中,以便在需要时可以对所有变量进行迭代,但是我仍然可以按其名称访问变量(我不知道想要有一个vector<double> vec_count并具有代表count_cats的vec_count [0],代表count_dogs的vec_count [1]等)

谢谢!

1 个答案:

答案 0 :(得分:0)

因此,您需要一个可迭代的数据结构,在其中您还可以通过引用值的名称来提取值...您正在考虑使用std::map

您可以在这里做

std::map<std::string, double> counts;
counts["cats"] = 5;
counts["dogs"] = 77;

for( auto it = counts.begin(); it != counts.end(); it++) {
    std::cout << "There are " << it->second << ' ' << it->first << std::endl;
}

查看实时示例here(ideone)。