【发布时间】:2019-02-24 16:38:16
【问题描述】:
让我们考虑一个类A,它实现了一个构造函数和一个成员函数foo。
这里有一些代码:
constexpr int size1 = 100;
constexpr int size2 = 13;
constexpr int size3 = 48;
constexpr int size4 = 231;
constexpr int size5 = 5;
constexpr int size6 = 125;
constexpr int size7 = 88;
constexpr int size8 = 549;
constexpr int size9 = 417;
int main(void)
{
std::array<A*, size1> array1;
std::array<A*, size2> array2;
std::array<A*, size3> array3;
std::array<A*, size4> array4;
std::array<A*, size5> array5;
std::array<A*, size6> array6;
std::array<A*, size7> array7;
std::array<A*, size8> array8;
std::array<A*, size9> array9;
// Solution
return 0;
}
我想构造每个数组的每个元素,然后为每个元素调用成员函数foo。
基本上,我想做:
for (auto& element : array1)
{
element = new A();
element->foo();
}
对于每个数组。
在不连续写下九个 for 循环的情况下,最短和最简单的方法是什么?
【问题讨论】:
-
数组元组,并在两者上“迭代”?
-
你不能在元组、数组、跨度或 std::array 中获取你的大小吗?
-
我对@987654326@ 不太满意,这解释了为什么这个问题与我有关。在我点击“提交”后的前 30 分钟内,出现了三个详细且解释清楚的答案。如果问题不好,没人会打扰。我不明白负分。
-
我相信这是一个 XY 问题。你想要什么 - 就实际用例而言?例如
A在你的程序中实际上是什么意思? ....std::vector或 MACRO 可能是一个答案。