C++ 有没有更好的方法可以在不使用索引for循环的情况下循环数组中的每个元素?
我有一个C++ 有没有更好的方法可以在不使用索引for循环的情况下循环数组中的每个元素?,c++,arrays,loops,object,C++,Arrays,Loops,Object,我有一个triangle类,由三角形的边、周长和许多辅助函数组成 我创建了一个函数,它将填充三角形的一系列实例。假设我将创建3对象,因此三角形参数将设置为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
triangle
类,由三角形的边、周长和许多辅助函数组成
我创建了一个函数,它将填充三角形的一系列实例。假设我将创建3对象,因此三角形参数将设置为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();
}
}
我觉得这种方式效率很低,而且很难看
除了(inti=0;i
循环之外,还有更好的方法来遍历填充数组吗?我知道我可以将其融合到一个函数中,但我想知道如何使用两个函数。如注释中所述,您可以使用std::vector
std::vector
跟踪其自身的长度,因此在编写方法时,不需要将长度作为额外参数包含在内,而是在循环的范围内自动推导
使用std::vector
时,您的方法可能如下所示:
void populate_triangle(std::vector<Triangle> triangles) {
for (auto triangle : triangles) {
triangle.input_random_sides();
triangle.get_perimeter();
}
}
void填充_三角形(标准::矢量三角形){
用于(自动三角形:三角形){
三角形。输入任意边();
三角形。获取_周长();
}
}
std::vector
的数据数组保证存储在连续内存中。如果使用std::array
或std::vector
则可以使用基于范围的for循环。这两个选项之间的选择是项目数量是否固定。如果数字可以更改,则使用std::vector。为什么不使用std::array
?为什么要使用int
而不是size\u t
?为什么不使用STL及其迭代器功能编写C++?如果使用数组和指针(如当前的那样),那么就没有更好的了。我不知道你为什么认为这是非常低效和丑陋的。你到底希望什么?你能解释一下你关心的是什么吗?也许有人可以让你放心,因为我有这样的pythic思想,我可以“按数组排列”,虽然是C++,但不是Python。通常不会是肾盂的。。
populate_triangle(in_array, 3);
print_triangle(in_array, 3);
void populate_triangle(std::vector<Triangle> triangles) {
for (auto triangle : triangles) {
triangle.input_random_sides();
triangle.get_perimeter();
}
}