Loading...
ValentinT avatar ValentinT 4 Точки

C++ Advanced Judge - Task2 - Remove Invalid

Здравейте. Въпросът ми относно тази задача е : написвам си функцията, пускам я и когато я тествам с някакъв Input, като единия от тях е невалиден, при извеждането, отпечатва само тези преди невалидния Input. Това ми е кода : https://pastebin.com/4ipRi1ce интересува ме да не съм попаднал в Pitfall - овете, които Георги каза да внимавамe. След като изтрия указателя към невалидния елемент, правя този указател да e nullptr, навярно това е проблема, когато програмата се опита да прочете след това този Nullptr зависва.

Тагове:
0
C++ Programming
marsp avatar marsp 19 Точки

Здравей!

Проблемът е точно, че освобождаваш паметта на елемента, преди да го махнеш от списъкът. Това което става е, че реално елементът още си седи в списъкът, сочещ към nullptr, и когато main функцията извика ".toString()" метода на този елемент, можеш да се сетиш какво става хаха. :)

Поздрави!

0
16/09/2018 01:16:51
ValentinT avatar ValentinT 4 Точки

Благодаря! А за целта метода remove() на лист ли да използвам ? 

0
marsp avatar marsp 19 Точки

По-скоро erase(), тук може да прочетеш за разликата между двата метода. :)

 

Поздрави!

0
ValentinT avatar ValentinT 4 Точки

А друг въпрос. Когато напиша функцията по следния начин ->  https://pastebin.com/RSNLXYSA при въвеждане на входни данни ми извежда грешка и пише : "Expression: list iterator not incrementable", а когато я напиша по този начин -> https://pastebin.com/W69akkWt всичко работи както трябва, обаче в judge ми дава грешка и най вероятно има memory leak, някой може ли да ми обясни какво точно се случва и как мога да го коригирам ? 

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.