Прежде maxSize = std::max(maxSize, i-start+1);
необходимо удостовериться, что размер карты точно k
- Вы никогда не можете достигать k
, но текущий код instanly обновления maxSize
.
Также помнят start
значение в собственном max
код
if (map.size() == k)
if (i - start + 1 > maxSize) {
maxSize = i - start + 1;
astart = start;
}
...
return {astart, maxSize};
Нет, этого делать не нужно (отмена привязки события выполняется автоматически при удалении).
Нет, это не вызовет никаких проблем (если только у кого-то не возникнет неприятный опыт, которым они хотели бы поделиться :) Мои деньги идут на «это не имеет значения!».
Единственное исключение, о котором я могу думать, - это если вы выполняете какую-либо привязку к живому событию в ситуации, когда вы не хотите, чтобы вновь вставленные элементы получали те же обработчики событий элементов, которые вы ранее удалили из DOM. Тогда было бы неплохо отвязать любые (живые) обработчики событий перед удалением из DOM, при этом вы можете сделать это на любом этапе, и не обязательно до удаления.
Единственный раз, когда вы если бы вам больше не нужен обработчик событий для события на странице, нужно было бы явно отменить привязку.
Удаление элемента из модели DOM приводит к удалению событий и данных для этого элемента. Вот соответствующий исходный код
remove: function( selector ) {
if ( !selector || jQuery.filter( selector, [ this ] ).length ) {
// Prevent memory leaks
jQuery( "*", this ).add([this]).each(function(){
jQuery.event.remove(this);
jQuery.removeData(this);
});
if (this.parentNode)
this.parentNode.removeChild( this );
}
}