++ 新认识
学c语言时对 x++ 或 ++x 的理解是 "先取值再+1, 先+1再取值"
今天在理解代码上遇见了问题
list.erase(it++);
对上面代码我理解等效于
list.erase(it);
it++;
然而实际上这个代码运行不起来, 因为erase
的时候it
会被设置未空,再执行it++
就会crush.
但是 list.erase(it++);
是可以运行的,也就是说它们不等效.
简单看了一下, 它实际应该和下面的代码等效
it = list.erase(it);
it++;
list.erase(it++);
看起来很奇怪,我不喜欢这种写法.