У меня есть программа, которая нравится этаКогда STL-итератор будет равен нулю?
list<int>:: iterator n = alist.begin();
while(n!= (list<int>::iterator)0)
{
printf("Element is %d\n",*n);
n = alist.erase(n);
}
Так вот я сравниваю итератор с нуля. , но после удаления последнего элемента компилятор показывает эту ошибку.
*** glibc detected *** ./new: free(): invalid pointer: 0xbf99cb10 *** ======= Backtrace: ========= /lib/libc.so.6[0xb7d956e1] /lib/libc.so.6(cfree+0x89)[0xb7d96d79] /usr/lib/libstdc++.so.6(_ZdlPv+0x21)[0xb7f3ff81] ./new[0x8048c81] ./new[0x8048ca6] ./new[0x8048d07] ./new[0x8048d39] ./new(__gxx_personality_v0+0x216)[0x804888e] /lib/libc.so.6(__libc_start_main+0xdc)[0xb7d46f9c] ./new(__gxx_personality_v0+0x49)[0x80486c1] ======= Memory map: ======== 08048000-0804a000 r-xp 00000000 08:09 3704751 /home/sathya/chaithra/archivesthrash/new
Если я хочу, чтобы итератор был равен нулю, если очередь/список пуст .. что я должен делать? Потому что в моем проекте мне нужно сравнить этот итератор только с нулем, а не с alist.end() .. Какое возможное решение для этого ...?
Почему вы не можете сравнить его с «alist.end() "? Кажется, это логично. –