C++ 如何在名称依赖于int的循环内创建对象
我有一个名为“Particle”的结构,我想创建几个名称取决于int的对象。 由于我在for循环中,名称将更改如下:part0、part1、part2C++ 如何在名称依赖于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;
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
”使用vectorstd::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