我刚开始使用面向对象,我对构造函数有疑问。这只会创建相同的对象" Team a"反复使用不同的参数i,正确吗?
for (int i = 1; i < n+1; i++) Team a (i); // construct teams
我如何创建不同的&#34;团队&#34;,即团队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)
答案 0 :(得分:3)
您可以使用std::vector:
mongocxx::options::find opts;
opts.limit( 1 );
auto cursor = db["db-name"].find({ }, opts);
bsoncxx::document::view doc = *cursor.begin();
std::cout << bsoncxx::to_json(doc) << std::endl;
注意: std::vector<Team> teams;
for(int i = 0; i < n; ++i)
teams.emplace_back(i + 1); // makes Team(i + 1) in vector
使用零基础索引,因此您的团队#1是索引0:
std::vector
答案 1 :(得分: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"]
答案 2 :(得分:0)
第一个问题:是的,它会产生n次a
类型的变量Team
。但是(!)它在每次迭代时都是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
}
您应该使用团队的容器(例如矢量)。