с++ vector, iterator, new and delete
23 отговора
0 прегледа
Re: с++ vector, iterator, new and delete
хехе, наистина много мерси за отговорите. Тази тема, както и очаквах, не премина без обичайните простотии - рано или късно темата се изменя (в случая към темата за правописа). Много ме кефи като прочета някаква онлайн статия примерно във стандарт и после погледна отдолу читателските мнения - има 3-4 по темата, 5-тото вече е "кур за цска". хахаха
Тук нещо подобно се получава :)
Пък и всеки се изказва се едно е ебати разбирача...може би заради това се получават толкова изродски спорове - всеки иска да е най-големия разбирач (и разбира се по всички теми).
иначе, наистина би било по-яко със smart pointers, но ми се налагаше да ползвам обикновените. Това, което търсех звучи така:
list<Cls*>::iterator it = lst.begin();
while (it != lst.end())
{
delete *it;
it = lst.erase(it);
}
същото може да се предложи и за вектор, нали така?
Забележки по този код?
Тук нещо подобно се получава :)
Пък и всеки се изказва се едно е ебати разбирача...може би заради това се получават толкова изродски спорове - всеки иска да е най-големия разбирач (и разбира се по всички теми).
иначе, наистина би било по-яко със smart pointers, но ми се налагаше да ползвам обикновените. Това, което търсех звучи така:
list<Cls*>::iterator it = lst.begin();
while (it != lst.end())
{
delete *it;
it = lst.erase(it);
}
същото може да се предложи и за вектор, нали така?
Забележки по този код?
Re: с++ vector, iterator, new and delete
>> същото може да се предложи и за вектор, нали така?
Не бих ти препоръчал да триеш вектор елемент по елемент както правиш със списъка - нали се сещаш, че за вектор тая операция би била квадратична, а не линейна - местят се всички елементи на мястото на изтрития. Поне не от предницата.
Освен това за извикването на delete ти е достатъчен const_iterator. Не ползвай неконстантни неща ако може да са константни.
А за изказването като 'ебати разбирача' - едва ли можеш да прецениш кой колко разбира (както защото все още ти не си разбирач, така и защото не познаваш повечето от хората). Не пропускай вероятността някои наистина да разбират. Не се подвеждай от езиковите спорове - те са форумна култура и не винаги имат пряка зависимост със знанията на хората.
System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_
Не бих ти препоръчал да триеш вектор елемент по елемент както правиш със списъка - нали се сещаш, че за вектор тая операция би била квадратична, а не линейна - местят се всички елементи на мястото на изтрития. Поне не от предницата.
Освен това за извикването на delete ти е достатъчен const_iterator. Не ползвай неконстантни неща ако може да са константни.
А за изказването като 'ебати разбирача' - едва ли можеш да прецениш кой колко разбира (както защото все още ти не си разбирач, така и защото не познаваш повечето от хората). Не пропускай вероятността някои наистина да разбират. Не се подвеждай от езиковите спорове - те са форумна култура и не винаги имат пряка зависимост със знанията на хората.
System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_
Re: с++ vector, iterator, new and delete
good point!
иначе не изключвам тази възможност. все пак за това пиша във форума.
иначе не изключвам тази възможност. все пак за това пиша във форума.
Re: с++ vector, iterator, new and delete
В отговор на:Не бих ти препоръчал да триеш вектор елемент по елемент както правиш със списъка - нали се сещаш, че за вектор тая операция би била квадратична, а не линейна - местят се всички елементи на мястото на изтрития. Поне не от предницата.
ами да! а аз се чудех защо е толкова бавно ... Като са няколко милиона елементите на вектора се забелязва :(