在标准库容器vector中,这样是正确的:
vectorvc;
vector::iterator iter;
iter=vc.begin();
iter++;//此时正确
但是下面这样是错误的:
vectorvc;
vc.begin()++//此时错误
为什么不能直接vc.begin()++呢?
在标准库容器vector中,这样是正确的:
vectorvc;
vector::iterator iter;
iter=vc.begin();
iter++;//此时正确
但是下面这样是错误的:
vectorvc;
vc.begin()++//此时错误
为什么不能直接vc.begin()++呢?
vc.begin()++被编译成
vc.begin() = vc.begin() + 1;
或者说
vector::iterator iter;
iter = vc.begin();
iter = vc.begin() + 1;
那么事实上vc.begin()被调用了两次。