c++ - vector insert() 导致程序崩溃

标签 c++ vector insert crash

这是导致我的程序崩溃的函数的第一部分:

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 部分崩溃,因为我可以在屏幕上看到“here”,但看不到“it failed”。出现以下错误消息:

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 结构的另一个声明)。我该怎么做才能解决这个问题,第一个插入与第二个插入有何不同?

最佳答案

应该是:

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

您从错误的实例传递了迭代器。

关于c++ - vector insert() 导致程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2748950/

相关文章:

c++ - 自动跟踪槽生命周期的信号库

c++ - 来自 C 数组的 STL 数组,无需复制

C++ Vector at/[] 运算符速度

sql - XML 解析错误 : 'A string literal was expected' when inserting values into table

MySQL 错误 1264 : out of range value for column

c++ - vector 迭代器循环不兼容

c++ - 为什么vector前面没有push/pop?

javascript - 如何绕轴旋转 Three.js Vector3?

MySQL - 从时间距离为5分钟的2个表中获取行,并将它们放入新表中

c++ - 如何创建每秒帧数不错的简单二维图形?