【发布时间】:2021-03-16 20:16:52
【问题描述】:
我有一个 triangle 类,由三角形的边周长和许多辅助函数组成。
我创建了一个函数,它将填充triangle 的实例数组。假设我将创建 3 个对象,因此 triangles 参数将设置为 3。
void populate_triangle(triangle in_array[], int triangles) {
for (int i = 0; i < triangles; i++) {
in_array[i].input_random_sides();
in_array[i].get_perimeter();
}
}
我还创建了一个打印函数,它将输出关于上述 3 个对象的所有信息,即三个边和周长。
void print_triangle(trianglein_array[], int triangles) {
for (int i = 0; i < triangles; i++) {
cout << "Triangle N: " << i << endl;
in_array[i].print_information();
}
}
我稍后在我的 main 中调用它们
populate_triangle(in_array, 3);
print_triangle(in_array, 3);
我觉得这种方式效率很低,很丑。
除了for (int i = 0; i < triangles; i++) 循环之外,还有更好的方法来遍历填充数组吗?我知道我可以将它融合到一个功能中,但我想知道如何用两个来完成。
【问题讨论】:
-
如果您使用了
std::array或std::vector,您可以使用基于范围的for 循环。这里两者之间的选择是项目数量是否固定。如果数字可以改变,则为 std::vector。 -
你为什么不用
std::array?你为什么使用int而不是size_t?为什么要编写 C++ 而不使用 STL 及其迭代器功能? -
如果你使用数组和指针(就像你现在一样),那就没有更好的了。我不确定您为什么认为它效率低下且丑陋。你希望得到什么?你能解释一下你的担忧是什么吗?也许有人可以让你安心。
-
因为我有这个 Pythonic 的想法,我可以“为每个数组”。
-
它是 C++,而不是 Python。它通常不会是 pythonic..