结构向量 push_back C++
structure vector push_back C++
我在弄清楚如何使用 push_back 函数将结构的数组元素推入 TeamV 向量时遇到问题。
这是我目前的代码:
const int MEMBERS = 3;
const int TEAM_NUM = 4;
struct TeamS
{
int ID_NUM;
string team_members;
};
int main()
{
int arrayS = 0;
const int ID[TEAM_NUM] = { 123, 321, 456, 789 };
const string TEAM [TEAM_NUM][MEMBERS] =
{
{ "Sarah", "Joe", "John" },
{ "Chris", "Kevin", "James" },
{ "Tom", "Kim", "Emily" },
{ "Jill", "Jason", "Jim" }
};
vector <TeamS> TeamV;
Initialize(TeamV, ID, TEAM, arrayS);
return 0;
}
void Initialize(vector <TeamS> & TeamV, const int Id[], const string m[][MEMBERS], int arraysize)
{
cout << "Starting initialization" << endl;
for (arraysize; arraysize < TEAM_NUM; arraysize++)
{
TeamV.push_back(???)
TeamV [arraysize].ID_NUM = Id[arraysize];
TeamV [arraysize].team_members = m[arraysize][MEMBERS];
}
cout << "Ending initialization" << endl;
}
提前致谢。
首先,您需要将 TeamS
更改为包含 string
团队成员的列表,而不仅仅是一个 string
.
struct TeamS
{
int ID_NUM;
std::vector<string> team_members;
};
在函数中初始化teamV
:
void Initialize(vector <TeamS> & TeamV, const int Id[], const string m[][MEMBERS], int arraysize)
{
cout << "Starting initialization" << endl;
for (arraysize; arraysize < TEAM_NUM; arraysize++)
{
// Create an instance of TeamS and flesh out its contents.
TeamS team;
team.ID_NUM = Id[arraysize];
for ( int i = 0; i < MEMBERS; ++i )
{
team.team_members.push_back(m[arraysize][i]);
}
// Now add the TeamS to TeamV.
TeamV.push_back(team);
}
cout << "Ending initialization" << endl;
}
您可以采取稍微不同的方法,即向 TeamV
添加一个空的 TeamS
并充实 TeamV
.
中已有成员的内容
void Initialize(vector <TeamS> & TeamV, const int Id[], const string m[][MEMBERS], int arraysize)
{
cout << "Starting initialization" << endl;
for (arraysize; arraysize < TEAM_NUM; arraysize++)
{
// Add an tempy TeamS to TeamV.
TeamS team;
TeamV.push_back(team);
// Flesh out its contents of the element in TeamV.
TeamV[arraysize].ID_NUM = Id[arraysize];
for ( int i = 0; i < MEMBERS; ++i )
{
TeamV[arraysize].team_members.push_back(m[arraysize][i]);
}
}
cout << "Ending initialization" << endl;
}
我在弄清楚如何使用 push_back 函数将结构的数组元素推入 TeamV 向量时遇到问题。
这是我目前的代码:
const int MEMBERS = 3;
const int TEAM_NUM = 4;
struct TeamS
{
int ID_NUM;
string team_members;
};
int main()
{
int arrayS = 0;
const int ID[TEAM_NUM] = { 123, 321, 456, 789 };
const string TEAM [TEAM_NUM][MEMBERS] =
{
{ "Sarah", "Joe", "John" },
{ "Chris", "Kevin", "James" },
{ "Tom", "Kim", "Emily" },
{ "Jill", "Jason", "Jim" }
};
vector <TeamS> TeamV;
Initialize(TeamV, ID, TEAM, arrayS);
return 0;
}
void Initialize(vector <TeamS> & TeamV, const int Id[], const string m[][MEMBERS], int arraysize)
{
cout << "Starting initialization" << endl;
for (arraysize; arraysize < TEAM_NUM; arraysize++)
{
TeamV.push_back(???)
TeamV [arraysize].ID_NUM = Id[arraysize];
TeamV [arraysize].team_members = m[arraysize][MEMBERS];
}
cout << "Ending initialization" << endl;
}
提前致谢。
首先,您需要将
TeamS
更改为包含string
团队成员的列表,而不仅仅是一个string
.struct TeamS { int ID_NUM; std::vector<string> team_members; };
在函数中初始化
teamV
:void Initialize(vector <TeamS> & TeamV, const int Id[], const string m[][MEMBERS], int arraysize) { cout << "Starting initialization" << endl; for (arraysize; arraysize < TEAM_NUM; arraysize++) { // Create an instance of TeamS and flesh out its contents. TeamS team; team.ID_NUM = Id[arraysize]; for ( int i = 0; i < MEMBERS; ++i ) { team.team_members.push_back(m[arraysize][i]); } // Now add the TeamS to TeamV. TeamV.push_back(team); } cout << "Ending initialization" << endl; }
您可以采取稍微不同的方法,即向
中已有成员的内容TeamV
添加一个空的TeamS
并充实TeamV
.void Initialize(vector <TeamS> & TeamV, const int Id[], const string m[][MEMBERS], int arraysize) { cout << "Starting initialization" << endl; for (arraysize; arraysize < TEAM_NUM; arraysize++) { // Add an tempy TeamS to TeamV. TeamS team; TeamV.push_back(team); // Flesh out its contents of the element in TeamV. TeamV[arraysize].ID_NUM = Id[arraysize]; for ( int i = 0; i < MEMBERS; ++i ) { TeamV[arraysize].team_members.push_back(m[arraysize][i]); } } cout << "Ending initialization" << endl; }