Вы захотите проверить анимационный jQuery () функция. Стандартный способ сделать это располагает элемент абсолютно и затем анимирует "левых" или "правильное" свойство CSS. Одинаково популярный путь состоит в том, чтобы увеличиться/уменьшить левое или правое поле.
Теперь, сказав это, необходимо знать о серьезной потере производительности для любого типа анимации, которая длится дольше, чем секунда или два. JavaScript не был просто предназначен для обработки долго, поддержан, медленные анимации. Это имеет отношение к способу, которым элемент DOM перерисовывается и повторно вычисляется для каждого "кадра" анимации. При выполнении анимации ширины страницы, которая длится больше чем пару секунд, ожидайте видеть скачок процессора на 50% или больше. Если Вы находитесь на IE6, готовитесь видеть, что Ваш компьютер спонтанно воспламеняется в пылающий шар некомпетентности браузера.
Для чтения на этом проверьте этот поток (из моего самого первого сообщения Stackoverflow не меньше)!
Вот является ссылка на документы jQuery для анимационного () функцией: http://docs.jquery.com/Effects/animate
Я считаю, что insert () не перезапишет существующее значение, и результат операции можно проверить, проверив значение типа bool в возвращаемом значении итератора / пары
Присвоение оператор подстрочного индекса [] просто перезаписывает все, что там есть (вставляя запись, если ее еще нет)
Любой из операторов insert и [] может вызвать проблемы, если вы не ожидаете такого поведения и не учитываете его .
Например, с помощью insert:
std::map< int, std::string* > intMap;
std::string* s1 = new std::string;
std::string* s2 = new std::string;
intMap.insert( std::make_pair( 100, s1 ) ); // inserted
intMap.insert( std::make_pair( 100, s2 ) ); // fails, s2 not in map, could leak if not tidied up
и с оператором []:
std::map< int, std::string* > intMap;
std::string* s1 = new std::string;
std::string* s2 = new std::string;
intMap[ 100 ] = s1; // inserted
intMap[ 100 ] = s2; // inserted, s1 now dropped from map, could leak if not tidied up
Я думаю, что они верны, но не скомпилировали их, поэтому могут быть синтаксические ошибки
The insert method inserts into the map, while the overloaded index operator will return the element with the key key_value if it is in the map, if it is not already in the map then it will insert it.
В дополнение к тому, что map :: operator []
заменит существующее значение, это operator []
map :: will ] создать и добавить к карте существующее значение по умолчанию для замены до того, как произойдет замена (вызов map :: operator [] ()
должен возвращать ссылку на что-то). Для элементов, создание которых связано с большими затратами, это может быть проблемой.
См. «Совет 24: Тщательно выбирайте между map :: operator []
и map :: insert
, когда эффективность важно »в Эффективном STL Скотта Мейерса .
For a map
, the former (operator[]
) expression will always replace the value part of the key-value pair with the new supplied value. A new key-value pair will be inserted if one doesn't already exist.
In contrast, insert
will only insert a new key-value pair if a key-value pair with the supplied key part does not already exist in the map.