I am stuck on this stupid doubt and can't understand which part have I understood wrong.
I am trying to fill an empty string and I thought of doing it using the subscipt [] operator but found that although loop runs perfectly but the final string is still empty with size zero. However push_back runs perfectly fine. I can use push_back but want to understand the reason for the first one. If anyone can clarify?
string r;
int i;
for(i = 0; i < 5; ++i)
{
     r[i] = 'a';
}
cout << r.size();    //output: 0
cout << endl;
for(i = 0; i < 5; ++i)
{
    r.push_back('a');
}
cout << r.size();    //output: 5
 
    