C++ iterator với vector

void deQueue(vector<int>&q){
        vector<int>::iterator it = q.begin();
	for (it; it + 1 < q.end(); it++) {
		*it = *(it + 1); 
	}
	q.pop_back();
}
void main(){
for (int i = 0; i < 10; i++) q.push_back(i);
//Cach 1:
for(int i =0;i<10;i++) deQueue(q);
//nhận được kết quả là vector rỗng.
//Cach 2:
vector<int>::iterator it = q.begin();
	for (it; it + 1 < q.end(); it++) {
		*it = *(it + 1); 
	}
	q.pop_back();
}
//Lai chi xoa 5 phan tu
}

Cho em hỏi tại sao lại như thế ạ.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?