Vector insert () вызывает сбой программы - PullRequest
2 голосов
/ 01 мая 2010

Это первая часть моей функции, которая вызывает сбой моей программы:

vector<Student> sortGPA(vector<Student> student) {
    vector<Student> sorted;
    Student test = student[0];
    cout << "here\n";
    sorted.insert(student.begin(), student[0]);
    cout << "it failed.\n";
         ...

Она падает прямо в части sorted, потому что я вижу «здесь» на экране, но не"это не удалось."Появляется следующее сообщение об ошибке:

Debug Assertion Failed!

(a long path here...)

Expression: vector emplace iterator outside range

For more information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.

Я не уверен, что вызывает проблему сейчас, так как у меня есть аналогичная строка кода в другом месте student.insert(student.begin() + position(temp, student), temp);, которая не падает (где position возвращаетint и temp - это еще одно объявление структуры Student).Что я могу сделать, чтобы решить проблему, и чем первая вставка отличается от второй?

Ответы [ 2 ]

8 голосов
/ 01 мая 2010

Должно быть:

sorted.insert(sorted.begin(), student[0]);

Вы передавали итератор из неправильного экземпляра.

3 голосов
/ 01 мая 2010

Когда вы используете std::vector::insert ( iterator position, const T& x );, итератор position должен указывать на тот же вектор. Вы используете итератор от student с sorted.insert, который умирает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...