for 循环中的构造函数
Constructor in for loop
我刚刚开始使用OO,我有一个关于构造函数的问题。这只会使用不同的参数 i 一遍又一遍地创建相同的对象"团队 a",对吗?
for (int i = 1; i < n+1; i++) Team a (i); // construct teams
如何创建不同的"团队",即团队 a、团队 b ...如果我知道必须有多少支球队,H队?参数 i 不能同时是属性和名称(团队 1、团队 2..)吗?
提前感谢您的任何提示或帮助!
Pd:这是我正在使用的构造函数(如果您需要更多代码,请在注释中写下):
public:
//constructors
Team(int n); // (this will set number to n and points, goals_scored, goals_lost to 0)
您可以使用 std::vector:
std::vector<Team> teams;
for(int i = 0; i < n; ++i)
teams.emplace_back(i + 1); // makes Team(i + 1) in vector
注意:std::vector
使用从零开始的索引,因此您的团队 #1 的索引为 0:
teams[0]; // team #1
teams[1]; // team #2
teams[n]; // team #n + 1
您想使用 STL 中的map
:
std::map <string, Team> Teams;
for (int i = 1; i < n+1; i++)
{
std::string noStr = std::to_string(i);
std::string teamName = "Team " + noStr; // "Team 1", "Team 2", ..., "Team N"
Teams[teamName] = Team(i); // Store Team object in the map
}
现在您可以使用其名称访问任何团队:
// For team 5 object
Teams["Team 5"]
第一个问题:是的,它会生成 n 倍的 Team
类型的变量a
。但是(!它在每次迭代时都是 for 循环的本地。以后您将无法使用它们。
第二个问题:纯数字不能是名字。这不起作用:
int 1 = 1; // not(!) valid
你可以使用这样的东西:
int a_1 = 1 ;
int a_2 = 2;
但是你不能通过变量来产生这个:
for (int i = 1; i < n+1; i++){
int a_i = 1; // defines a local variable "a_i"
int i = i ;// not valid i is already defined
}
您应该使用团队的容器(例如向量)。
相关文章:
- C++11:没有复制构造函数的自定义基于范围的循环
- 自定义对象构造函数在循环外部循环
- 无限构造函数循环
- 复制构造函数和分配操作员对循环依赖类别的过载
- 在构造函数中循环C++是一个好主意吗?
- 循环复制构造函数调用
- 使用 std::weak_ptr 和别名构造函数中断循环引用:声音或有问题
- 循环:在构造函数中使用中断或状态变量
- 构造函数初始化列表中的循环依赖项
- 单链循环列表的复制构造函数
- C++中类的循环,如何使用它们的构造函数
- 复制具有相互引用/循环依赖关系的类的构造函数
- 复制构造函数不适用于循环队列
- for 循环中的构造函数
- 如何在 for 循环中调用参数化构造函数
- 在循环构造函数调用中创建的对象的副本
- 如何在C++中构造用于循环的复合函数
- c++循环构造依赖:类的构造函数都有指向彼此的指针
- 我需要以一种可以从循环调用构造函数的方式组织我的类
- 构造函数中的循环指针注入