c++容器调用erase函数报错

img

img


主要功能是把某学号的学生删除后自动归还他所借的图书并且从登录白名单中删除

你不能在迭代器循环内调用vector::erase()函数,因为vector::erase()会使得被删除元素以及其后的所有元素的迭代器失效包括end()
正确做法是:你先用查找算法(比如std::find()或你自己写循环查找)找到要指向删除元素的迭代器,在循环体外删除该元素。之后其他操作在另一个迭代器循环内对删除之后的容器进行操作

详情参考
https://en.cppreference.com/w/cpp/container/vector/erase