Search code examples
c++vectorstructpush-back

Vector of structs initialization


I want know how I can add values to my vector of structs using the push_back method

struct subject
{
  string name;
  int marks;
  int credits;
};


vector<subject> sub;

So now how can I add elements to it?

I have function that initializes string name(subject name to it)

void setName(string s1, string s2, ...... string s6)
{
   // how can i set name too sub[0].name= "english", sub[1].name = "math" etc

  sub[0].name = s1 // gives segmentation fault; so how do I use push_back method?

  sub.name.push_back(s1);
  sub.name.push_back(s2);
  sub.name.push_back(s3);
  sub.name.push_back(s4);

  sub.name.push_back(s6);

}

Function call

setName("english", "math", "physics" ... "economics");

Solution

  • Create vector, push_back element, then modify it as so:

    struct subject {
        string name;
        int marks;
        int credits;
    };
    
    
    int main() {
        vector<subject> sub;
    
        //Push back new subject created with default constructor.
        sub.push_back(subject());
    
        //Vector now has 1 element @ index 0, so modify it.
        sub[0].name = "english";
    
        //Add a new element if you want another:
        sub.push_back(subject());
    
        //Modify its name and marks.
        sub[1].name = "math";
        sub[1].marks = 90;
    }
    

    You cant access a vector with [#] until an element exists in the vector at that index. This example populates the [#] and then modifies it afterward.