gpt4 book ai didi

c++ - 每次循环运行时如何更改for循环中的对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:04:14 25 4
gpt4 key购买 nike

我试图将与这个问题相关的细节保持在最低限度,但我肯定会扩展任何使我的帖子更清晰的内容。

我是 C++ 的新手,所以请原谅我这个可能很明显的问题,我什至无法清楚地表达问题以找到有用的搜索结果。

我最终想为行星运动编写一个蛙跳算法。我定义了一个名为 planet 的类

Planet(double mass, double x0, double x1, double v0, double v1)

然后我有对象

Planet p0(2.0, -0.5, 0, -0.94, 0.65);
Planet p1(1.0, -0.6, -0.2, 1.86, 0.7);
Planet p2(1.0, 0.5, 1.0, -0.44, -1.40);
Planet p3(0.4, 0.6, 0.3, 1.15, -1.50);

我想写一个 for 循环,它会遍历每一个,并从每个中取出一个特定的组件进行计算;计算牛顿的引力。我首先想测试如何从对象中获取特定组件。

我设想这是这样的

for(int j=0; j<4; ++j){
cout << p[j].getvx() << "\n";
}

已经定义了getvx()。例如,当我尝试 p1.getvx() 时它工作正常。

那么我的问题是,如何在不输入 p0、p1 等的情况下获取从 0 到 3 的 j 的 p[j]?可以在 for 循环中完成吗,我缺少一些语法吗?

最佳答案

如果您有 C++11 编译器,您可以在循环中轻松地执行此操作:

for (auto& p : {p0, p1, p2, p3}}
{
cout << p.getvx() << "\n";
}

否则,最简单的解决方案是将行星制成一个阵列,而不是四个单独的物体。

编辑:要使用数组,您可以这样做:

Planet planets[] = {
Planet(2.0, -0.5, 0, -0.94, 0.65),
Planet(1.0, -0.6, -0.2, 1.86, 0.7),
Planet(1.0, 0.5, 1.0, -0.44, -1.40),
Planet(0.4, 0.6, 0.3, 1.15, -1.50)
};

for (int i = 0; i < sizeof(planets) / sizeof(planets[0]); ++i)
{
cout << planets[i].getvx() << "\n";
}

关于c++ - 每次循环运行时如何更改for循环中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28687392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com