今天看《c++标准库》第7节 iterotor,只有randomacess iterator支持+=n ,-=n,+n,-n,it-it2(当然没有it+it2),支持的容器有string vector deque,及一般指针与array,其中string和
vector比较特别,因为 vector<T>::iterator it,it++时,返回的临时变量根据vector实现形式可能是指针也可能是class(其他容器基本是class,不存在这种情况),
而c++基本类型包括指针作为临时变量时都不允许更改其值,class 和struct可以,所以(it++)++这种形式可能在编译时出错。在vs2012里试了下没啥问题。说明iterator不是pointer.
书上给的例子是sort(++col1.begin(),...),begin()函数返回值如果是pointer临时变量,则不能++.