C++ 如何在每次迭代中创建一个新变量/对象的循环?

C++ 如何在每次迭代中创建一个新变量/对象的循环?,c++,loops,C++,Loops,我正在控制台上做一个台球游戏模拟。有一门课叫Ball。基本上,我希望用户输入桌上有多少个台球,以及它们的位置和速度。我唯一能看到这种效果的方法是,如果我使用一个从1(或0)到池球数的循环,循环中的内容如下。不过,这有两个问题 问题1:我不知道如何让它为每个循环创建一个变量 问题2:因为它在循环中,所以它只能在循环中的代码块中创建变量,这意味着我不能在循环之外使用它 cout << "Please tell me where to drop the ball (x y z): "; i

我正在控制台上做一个台球游戏模拟。有一门课叫Ball。基本上,我希望用户输入桌上有多少个台球,以及它们的位置和速度。我唯一能看到这种效果的方法是,如果我使用一个从1(或0)到池球数的循环,循环中的内容如下。不过,这有两个问题

问题1:我不知道如何让它为每个循环创建一个变量

问题2:因为它在循环中,所以它只能在循环中的代码块中创建变量,这意味着我不能在循环之外使用它

cout << "Please tell me where to drop the ball (x y z): ";
int xp,yp,zp;
cin >> xp >> yp >> zp;
if (!cin) exit(EXIT_FAILURE);
vec3 position(xp,yp,zp);
cout << "Please tell me how fast the ball is moving (x y z): ";
int xv,yv,zv;
cin >> xv >> yv >> zv;
vec3 velocity(xv,yv,zv);
cout << "Please tell me how heavy the ball is: ";
int weight;
cin >> weight;
cout << "Please tell me what number the ball is: ";
int number;
cin >> number;
Ball my_ball(number,weight,position,velocity);
cout>xp>>yp>>zp;
如果(!cin)退出(退出失败);
vec3位置(xp、yp、zp);
cout>xv>>yv>>zv;
vec3速度(xv,yv,zv);
重量;
数量;
球我的球(数量、重量、位置、速度);
怎么办?

使用容器(例如
向量)并将对象存储在该容器中


阅读STL。它提供了一个有用的容器、算法和其他功能库。

使用
vector
创建
Ball
的集合:

vector<Ball> balls;

for (;;)
{
   // …
   balls.emplace_back(number, weight, position, velocity);
   // or:
   balls.push_back(Ball(number, weight, position, velocity));
}
矢量球;
对于(;;)
{
// …
球。后置(数量、重量、位置、速度);
//或:
球。推回(球(数量、重量、位置、速度));
}

emplace\u back
向量的末尾构造一个新元素,将提供的参数传递给
Ball
构造函数。

可能的方法太多了,但一种简单的方法是将球放入
std::vector
中。您可以使用其
push_back
方法添加到末尾。在循环之前声明该向量。