You have been given a .csv file named "students.csv" that contains information about students' grades in various courses. Each line in the file represents a student's record and contains the following information in the order listed: student ID, course name, grade.
Write a C++ program that reads the "students.csv" file, parses the data, and stores it in a vector of student objects/struct. The program should have two overloaded methods for adding students to the vector: one that takes a student struct as a parameter and another that takes the student's ID, course name, and grade as separate parameters.
Once the data has been parsed and stored, the program should print out the following information for each student:
- Student ID
- Course names and grades in a tabular format
- Average grade for all courses