++ 新认识

学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++);看起来很奇怪,我不喜欢这种写法.

posted @ 2024-07-15 17:59  天刚刚破晓  阅读(9)  评论(0)    收藏  举报