Использование вектора пользовательских типов объектов класса

Работая над решением простой проблемы в C ++, хочу понять, как я мог бы использовать вектор объектов определенного пользователем типа класса без фиксированного (наихудшего) числа элементов, выделяемых при создании этого вектора объектов. то есть

В настоящее время я должен использовать

vector<grades> students(10000); 

где 10000 - это какое-то максимальное значение записей, которое я принял. если какой-то файл имеет больше записей, он явно падает.

Так что в случае кода ниже, как динамически увеличивать вектор объектов моего класса и читать записи в переменных моего класса. Я не могу использовать push_back (), как описано в коде ниже. Или как я могу использовать push_back ()?

Код ниже должен объяснить -

class grades
{
public:
    string mName;
    string mSurname;
    int mAge;
    string mLocation;
    int mMarks;
    char mGrade;

    //void readdata();
    void calcgrade();
    void showgrade(string name_surname);

};

    using namespace std;
    int main(int argc,char *argv[])
    {
        **vector<grades> students(10000);// I do not want to do this but make it dynamic**
        ifstream infile;
        char c;
        int i=0;
        int no_of_records=0;

        infile.open(argv[1],ios::in);
        if(infile.is_open() != true)
        {
            cerr << "Error opening input data file:" <<argv[1] << "...exiting\n";
            exit(-1);
        }

            while(!infile.eof()) 
            {
                 infile >> students[i].mName;//Can i use push_back() here and for reading all below entities, to make vector grow dynamically
                infile >> students[i].mSurname;
                infile >> students[i].mAge;
                infile >> students[i].mLocation;
                infile >> students[i].mMarks;
                i++;
                no_of_records++;
            }

            for(i=0;i<no_of_records;i++)
            {
               //Do some functions on each object students[i] in the vector 
            }
}

К вашему сведению: - Я прочитал текстовый файл на C ++, в котором есть записи, как показано ниже (порядок ячеек и количество разных типов сущностей в одной строке фиксировано, я знаю, но количество строк может варьироваться в зависимости от разных входных файлов, которые будут прочитаны ):

Name1 Surname1 Course1 Marks1
Name2 Surname2 Course2 Marks2
Name3 Surname3 Course3 Marks3
...
...

РЕДАКТИРОВАТЬ: код для обработки всех видов паразитных пространств, вкладок в записи объектов

while(!infile.eof()) 
    {
        c=infile.get();     
        if(isalnum(c))
        {
            infile.seekg(-1,ios::cur);
        }

        if(isalnum(c))
        {
            grades stud_temp;

            infile >> stud_temp.mName;
            infile >> stud_temp.mSurname;
            infile >> stud_temp.mAge;
            infile >> stud_temp.mLocation;
            infile >> stud_temp.mMarks;         
            students.push_back(stud_temp);          
        }
    }

Ответы на вопрос(1)

Ваш ответ на вопрос