C++ 如何在名称依赖于int的循环内创建对象

C++ 如何在名称依赖于int的循环内创建对象,c++,object,struct,C++,Object,Struct,我有一个名为“Particle”的结构,我想创建几个名称取决于int的对象。 由于我在for循环中,名称将更改如下:part0、part1、part2 for (int i = 0; i<num_particles; i++) { //double sample_x, sample_y, sample_theta; string name = "part" + std::to_string(i); Particle name; name.id = i;

我有一个名为“Particle”的结构,我想创建几个名称取决于int的对象。 由于我在for循环中,名称将更改如下:part0、part1、part2

for (int i = 0; i<num_particles; i++)
{
    //double sample_x, sample_y, sample_theta;
    string name = "part" + std::to_string(i);
    Particle name;
    name.id = i;
    name.x = dist_x(gen);
    name.y = dist_y(gen);
    name.theta = dist_theta(gen);

    cout << "Sample" << " " << name.x << " " << name.y << " " << name.theta << endl;

}

for(int i=0;i为什么要沿着变量命名的混乱道路前进,比如
var0
var1
var2
等等?我建议创建一个数组或向量


从代码片段中不清楚为什么需要创建不同名称的变量。此外,代码/用例不适合于可变范围的概念。

< P>此构造存在于C++中,称为“代码> STD::向量< /代码> .<
 // we want to have a bunch of variables of type Particle
 // all named particles[i] for i == 0,1,2....
 std::vector<Particle> particles;

 // create a new particle variable
 particles.emplace_back(x, y, theta);

 // print the variable number 42
 std::cout << particles[42];
//我们想要一组粒子类型的变量
//i==0,1,2….的所有命名粒子[i]。。。。
向量粒子;
//创建新的粒子变量
粒子后侵位(x,y,θ);
//打印变量号42
std::cout您可以在代码中简单地使用
cstdlib的
itoa()
函数

for (int i = 0; i<10; i++)
{ 
 char a[max];
 string pa="part_";
string name = pa + itoa(i,a,i+1) ;
cout << "Sample" << " " << name << endl;

}
}

为什么在循环中需要不同的变量名称?在循环中定义的变量在该循环中是局部的,在循环中构造的对象将在当前迭代结束时被销毁。也许您需要了解和阅读更多有关作用域的信息?除了重用变量名称“name”之外,对于类型为“string”和“Particle”的对象,没有理由这样做不起作用。您打算给“Particle”起一个名称,这意味着它有一个“string”字段,您应该设置它。尽管已经说过:如果您需要生成形式为“part0,part1,part2”的变量-这强烈表明您需要一个数组或类似的构造。为什么“粒子数”不仅仅是一个构造函数参数(如果它对粒子很重要)或者仅仅是一个容器索引(如果它与粒子无关),而只是管理代码。?为什么您需要变量名来包含“
n
”使用vector
std::vector items(num_particles)
(循环前)和循环内访问项[i]此答案看起来是一半评论,一半试图回答。如果您发布答案-发布答案,而不是要求澄清,这是评论的工作。相关阅读:。
 // we want to have a bunch of variables of type Particle
 // all named particles[i] for i == 0,1,2....
 std::vector<Particle> particles;

 // create a new particle variable
 particles.emplace_back(x, y, theta);

 // print the variable number 42
 std::cout << particles[42];
for (int i = 0; i<10; i++)
{ 
 char a[max];
 string pa="part_";
string name = pa + itoa(i,a,i+1) ;
cout << "Sample" << " " << name << endl;

}
}
 Sample part_0
 Sample part_1
 Sample part_2
 Sample part_3
 Sample part_4
 Sample part_5
 Sample part_6
 Sample part_7
 Sample part_8
 Sample part_9