5.3.6 vector迭代器的递增和递减
迭代器的递增问题较复杂,程序员可以递增或递减暂时性迭代器,对于vector和string两种容器类型则不同。(下面代码摘自《C++标准程序库》)

上述代码在编译时,通常会出错。但如果将容器类型换作deque,就可以通过编译。对于vector的其他操作,有时也可以通过编译。
上述现象的原因一般为:vector迭代器通常被作为一般指针。C++不允许修改任何基本型别的暂时值,但对struct和class则可以。若迭代器被实例化为一般指针,则编译会失败;若迭代器被实例化为class,则编译可以成功。对于deque、lists、sets和maps编译总是能通过,因为这些容器对象的迭代器不可能被实例化为一般指针。