Home > Net >  push_back an element into a vector of an another structure vector's back()
push_back an element into a vector of an another structure vector's back()

Time:10-27

struct Thing
{
    int id;
    std::vector<int> v2;
};

std::vector<Thing> v1;
int main()
{
    int n;
    cin>>n;

    for(int i=0;i<n;i  )
    {
        Thing pic;
        cin>>pic.id;
        v1.push_back(pic);
        int x;
        cin>>x;
        v1.back().v2.push_back(x);
    }
}

v1 is not an empty vector. I can't understand the line v1.back().v2.push_back(x); what's the actual meaning of this line

CodePudding user response:

v1.back() is the last element of v1 with the type of Thing

v1.back().v2 is the v2 member of that element with the type of vector<int>

So you are calling the push_back() on a vector<int> with an int what is fine

Note that if v1 is empty then v1.back() is UB

Edit: v1.back().v2.push_back(x); is kind of like

{
Thing& t=v1.back();
vector<int>& v=t.v2;
v.push_back(x);
}
  • Related