本文共 629 字,大约阅读时间需要 2 分钟。
在用vector刷题时碰到的基本出现错误的代码如下
int main(void) { vector nums; int num[] = {1,3,4}; int len = sizeof(num) / sizeof(num[0]); nums.assign(num,num+len); auto iter_slow = nums.begin(); vector ::iterator iter = nums.begin() + 1; //demo //删除了第一个元素后iter_slow 指向了 第二个元素3 //而iter指向了4这个元素 iter_slow = nums.erase(iter_slow); iter++; for (auto temp = nums.begin(); temp != nums.end(); temp++) { cout << *temp << "\t"; } return 0;}
程序执行完iter++ 后指接报错,瞬间崩溃,我没有找出错来,问了老师,老师说:"vector容器是基于数组实现的,你用了erase()方法数组里的数据发生移动,你不能把vector容器当链表使用."老师这么一说我秒懂,我自己怎么会犯如此低级的错误.我对容器用的还不够熟练啊😂😂
转载地址:http://pbyki.baihongyu.com/