2015-02-21 3 views
0

У меня возникла проблема выяснить, как использовать функцию push_back для перемещения элементов массива структуры в вектор TeamV.struct vector push_back C++

Вот код, я до сих пор:

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; 
} 

Спасибо заранее.

+1

Вы * уверены * вы не хотите 'КОМАНДЫ :: team_members' быть 'станд :: вектор '? – WhozCraig

ответ

1
  • Во-первых, вам нужно изменить 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; 
    } 
    

    Вы можете взять немного другой подход, при котором вы добавляете пустой TeamS к TeamV и конкретизировать содержание элемента уже в 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; 
    } 
    
Смежные вопросы