for 循环中的构造函数

Constructor in for loop

本文关键字:构造函数 循环 for      更新时间:2023-10-16

我刚刚开始使用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
}

您应该使用团队的容器(例如向量)。