在循环中创建变量(当前循环索引作为其名称)

时间:2016-02-21 12:17:43

标签: c++ loops declaration

是否可以在循环中创建变量?我需要一个未知的(1-50)数量的列表。每次代码运行时都会更改,我不想让列表超出我的需要

它看起来像我需要写一个我已经尝试过的东西:

for(int i = 0 ; i < number of tools; i++){
    list<int> listNumber%i;   //listNumber1,listNumber2...
}

2 个答案:

答案 0 :(得分:1)

无法声明可变数量的变量,也无法动态命名。

如果你想构建number_of_tools个列表并使用索引访问它们,那么你可以拥有的是一系列列表:

auto lists = std::vector<std::list<int>>(number_of_tools);

然后第一个列表是lists[0],依此类推。

如果相反,你只是想在循环的每次迭代中使用不同的列表,并在迭代后抛出列表,那么你可以简单地在循环中声明列表,但是你不需要to(你不能)改变变量的名称。

答案 1 :(得分:0)

对于初学者而言,在每次迭代中使用不同名称的循环中声明局部变量是没有意义的,因为变量的范围是循环的主体。

for(int i = 0 ; i < number of tools; i++){
    list<int> listNumber%i;   //listNumber1,listNumber2...
}

因此,例如,循环的每次迭代都不会知道前一次迭代中创建的列表。

例如,您可以在循环之前声明列表列表,并使用数据成员back()访问每次迭代中最后创建的列表

list<list<int>> lst;
for(int i = 0 ; i < number of tools; i++){
    lst.push_back( list<int>() );
    // process the created list using lst.back()
}