Удаление из вектора и файла

172
09 января 2018, 14:54

Не знаю как удалять студентов из класса Групп.Студенты добавляются из файла или с помощью функции addStudent.Буду признателен за ваши замечания к коду.

class Student   
{
public:
    Student(std::string studentInformation);
    Student(std::string firstName,std::string lastName,int ntb,double mark);
    std::string getFirstName();
    std::string getLastName();
    std::string getName();
    int getNtb();
    double getMark();
private:
    std::string firstName; //имя
    std::string lastName; //фамилия
    int ntb; //номер зачётки
    double mark; //cр.бал
};
Student::Student(string studentInformation)
{
   stringstream studentStream(studentInformation);
   studentStream >> firstName;
   studentStream >> lastName;
   studentStream >> ntb;
   studentStream >> mark;
}
Student::Student(string firstName,string lastName,int ntb,double mark)
{
   this->firstName = firstName;
   this->lastName = lastName;
   this->ntb = ntb;
   this->mark = mark;
}
string Student::getFirstName()
{
return firstName;
}
string Student::getLastName()
{
return lastName;
}
string Student::getName()
{
return firstName + " " + lastName; 
}
int Student::getNtb()
{
return ntb;
}
double Student::getMark()
{
return mark;
}

class Group
{
public:
    Group(std::string filePath);
    void setNameGroup();
    string getNameGroup();
    vector<Student> getValedictorian();
    vector<Student> getHonorRollStudents();
    vector<Student> getFailingStudents();
    void addStudent(string filePath);
    void printStudent(Student student);
private:
    string nameGroup;
    vector<Student> students;
};
Group::Group(string filePath)
{
    ifstream studentFile(filePath);
    string lineContents;
    while (!studentFile.eof())
    {
        getline(studentFile, lineContents);
        Student s(lineContents);
        students.push_back(s);
    }
    studentFile.close();
    sort(students.begin(), students.end(), [](Student &s1, Student &s2) 
                                            {
                                                return s1.getMark() > s2.getMark();
                                            });
}
void Group::printStudent(Student student)
{
    cout << "Имя:" << student.getName() << endl;
    cout << "Номер зачётки: " << student.getNtb() << endl;
    cout << "Cр.бал: " << student.getMark() << endl;
    cout << endl;
}
void Group::setNameGroup()
{
    cout << "Введите имя группы";
    cin >> nameGroup;
}
string Group::getNameGroup()
{
    return nameGroup;
}
vector<Student> Group::getValedictorian()
{
    for (Student s : students)
    {
        if (s.getMark() > 0 )
            break;
        else
            students.push_back(s);
    }
    return students;
}

vector<Student> Group::getHonorRollStudents()
{
    vector<Student> toReturn;
    for (Student s : this->students)
    {
        if (s.getMark() < 90)
            break;
        else
            toReturn.push_back(s);
    }
    return toReturn;
}
vector<Student> Group::getFailingStudents()
{
    vector<Student> toReturn;
    for (vector<Student>::reverse_iterator iter = students.rbegin(); iter < students.rend(); iter++)
    {
        if (iter->getMark() >= 89)
            break;
        else
            toReturn.push_back(*iter);
    }
    return toReturn;
}
void Group::addStudent(string filePath)
{
    string firstName; //имя
    string lastName; //фамилия
    int ntb; //номер зачётки
    double mark; //cр.бал
    ofstream studentFile(filePath, ofstream::app);
    if (!studentFile.is_open())
    {
        cout << "Ошибка открытия файла!" <<endl;
    }
    else
    {
        cout << "Введите имя студента ";
        SetConsoleCP(1251);
        cin >> firstName;
        SetConsoleCP(866);
        cout << "Введите Фамилию студента ";
        SetConsoleCP(1251);
        cin >> lastName;
        SetConsoleCP(866);
        cout << "Введите номер зачетки ";
        cin >> ntb;
        cout << "Введите средний бал студента ";
        cin >> mark;
        studentFile <<"\n" << firstName << " " << lastName << " " << ntb << " " << mark;
        Student newStudent(firstName,lastName,ntb,mark);
        students.push_back(newStudent);
    }
    studentFile.close();
}
READ ALSO
Сборка ANGLE под x86

Сборка ANGLE под x86

Собираю ANGLE в студии VS2017, под windows, по инструкцииЗадаю конфигурацию x86 (32bit) и генерирую проект для студии с помощью:

145
проблема с getch() в игре

проблема с getch() в игре

Вот фрагмент кода игрыНужно чтобы пушка могла одновременно двигаться и стрелять но когда двигаю пушку например налево пушка останавливается...

138