经调试发现,在一个for循环中,删除遍历中的vector元素,假设有如下声明:
std::vector<std::string> test;
std::vector<std::string>::iterator it;
用test.erase(it++),在删除最后一个元素后,it!=test.end()并不为true,
而改用it = test.erase(it)时,it!=test.end()为true,
虽然两种删除后,it指向的内容都一样。
搞不懂,是以铭记。
本文转自 hakuyo 51CTO博客,原文链接:http://blog.51cto.com/hakuyo/1289998,如需转载请自行联系原作者