Chúng tôi có nên xóa trước hoặc sau erase
. Sự hiểu biết của tôi là cả hai đều ổn. Nó có đúng không?Chúng ta có nên xóa trước hoặc sau khi xóa cho một con trỏ trong vectơ không?
Ngoài ra, có trường hợp nào chúng tôi không muốn xóa phần tử trong khi xóa nó không? Tôi tin rằng phải có, nếu không, các erase
sẽ được hạnh phúc để chịu trách nhiệm.
std::vector<foo*> bar;
...
for (vector<foo*>::iterator itr = bar.begin(); itr != bar.end(); itr++)
{
delete (*itr); //before OR
bar.erase(itr);
delete (*itr); //after???
}
bạn có nghĩa là 'std :: vector' –
sellibitze
cảm ơn. sửa chữa. – pierrotlefou
Tôi tin rằng bạn cũng có 'iter ++', nếu không vòng lặp sẽ không chấm dứt. – Naveen