Tôi có một dự án cũ được xây dựng bằng cách sử dụng visual studio 2003 và tôi biên dịch lại nó với vs2005 gần đây. Tuy nhiên, trong thời gian chạy, tôi nhận được lỗi sau:danh sách vòng lặp không gia tăng
danh sách iterator không incrementable
tôi bắt nguồn từ chương trình để chức năng này:
void InputQueue::update()
{
list<PCB>::iterator iter;
list<PCB>::iterator iterTemp;
for(iter = begin(); iter != end(); iter++)
{
if(iter->arrivalTime == 0)
{
ReadyQueue::getInstance()->add(*iter);
iterTemp = iter;
iter++;
erase(iterTemp);
}
}
}
Tôi không phải là một ++ chuyên gia C và đây là như xa khi trình gỡ rối VS nhận được tôi. Ai đó có thể giải thích cho tôi vấn đề là gì?
Cảm ơn
Có vẻ như từ http://www.sgi.com/tech/stl/Iterators.html các trình vòng lặp chuyển tiếp có thể gán được. std :: các trình vòng lặp của danh sách là các trình vòng lặp hai chiều (http://www.sgi.com/tech/stl/List.html, http://www.sgi.com/tech/stl/ReversibleContainer.html), và do đó cũng chuyển tiếp về phía trước. :-) –
Hmm, đây có phải là ý nghĩa của từ “multi-pass” không? Bởi vì nếu không thì không có gì được nói về khả năng gán * của trình lặp * (trái ngược với giá trị của nó!). –