Мне неясно, хотите ли вы реагировать на выделение внутри ввода или в другом месте документа. Предположим, что на входе:
mouseup
. $event
. getSelection()
не работает с входными значениями, поэтому используйте selectionStart
и selectionEnd
, чтобы получить выбор.
new Vue({
el: '#app',
methods: {
logSelectionWithinInput(e) {
var selection = e.target.value.substring(
e.target.selectionStart,
e.target.selectionEnd
);
console.log(selection);
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<input @mouseup="logSelectionWithinInput($event)" value="Text to select" />
</div>
Поскольку они помогают управлять вашими данными более определенным образом, чем массивы и списки.
Очередь сначала в том, что в первую очередь (FIFO)
в последний раз в последний раз, первый (LIFO)
массивы и списки являются случайным доступом. Они очень гибки, а также легко испорчены. Если вы хотите управлять своими данными как FIFO или LIFO, лучше всего использовать эти, уже реализованные, коллекции.
Стек
Существенно каждый раз, когда необходимо поместить задний ход & получите элементы в постоянное время, используйте Стек. Стек следует за LIFO it’s просто способ расположить данные.
Appln:
Очередь:
Очереди реализованы с помощью принципа First-In-Fist-Out (FIFO)
Appln:
Я бы также добавил: Не включает последовательность имени пользователя или даже часть имени пользователя, если она длинная.
-121--4043529-Я брошу еще один критерий в кольцо:
Потому что так много людей ожидают, что пользователи запомнят пароли, которые трудно запомнить, они прибегают к узорам клавиатуры, чтобы укротить безумие. Вброс сдвинутых версий для хорошей меры.
О, и ничего в списке запрещенных паролей Twitter .
-121--4043530-Если требуется применить определенный образец использования к структуре данных. Это означает, что когда вы отлаживаете проблему, вам не придется задумываться, если кто-то случайно вставил элемент в середину вашего списка, запутав некоторые инварианты.
Помимо исполнения использования, что другие уже упомянуты, существует также выпуск производительности. Когда вы хотите удалить что-то с начала массива или списка (ArrayList), он обычно принимает o (n) время, но для очереди требуется o (1) время. Это может сделать огромное значение, если есть много элементов.
Стек или очередь представляет собой логическую структуру данных; Он будет реализован в соответствии с крышками с физической структурой (например, список, массив, дерево и т. Д.)
Вы можете «бросить свой собственный», если хотите или воспользуйтесь уже реализованной абстракцией.
массивы / списки и стеки / очереди не являются взаимоисключающими концепциями. Infack любые стеки или реализации очередей, которые вы найдете, почти наверняка используют либо массивы, либо списки под капотом.
Структуры массива и списка предоставляют описание того, как хранятся данные, длинные с гарантиями сложности фундаментальных операций на структурах.
Стеки и очереди дают описание высокого уровня того, как элементы вставляются или удалены. FIFO для очередей, Фило для стеков.
Например. Если вы реализуете очередь сообщений, вы будете использовать очередь. Но сама очередь может хранить каждое сообщение в списке. «Нажатие» сообщение, добавляющее к передней части списка, «POPPING» сообщение, принимающее с конца списка.
Это вопрос намерений. Стеки и очереди часто реализуются с помощью массивов и списков, но добавление и удаление элементов более строго определено.
-121--1267640-SDK был выпущен; это первый раз, когда Android SDK следует за выпуском устройства под управлением этой версии.
-121--3732660-Вопрос неоднозначен, поскольку абстрактный тип данных стека или очереди можно представить с помощью массива или связанной структуры данных.
Различие между реализацией связанного списка стека или очереди и реализацией массива имеет тот же самый базовый компромисс, что и у любого массива и динамической структуры данных.
Связанная очередь/связанный стек имеет гибкие, высокоскоростные вставки/удаления с разумной реализацией, но требует больше ресурсов хранения, чем массив. Вставки/удаления недороги на концах массива до тех пор, пока не закончится пространство; реализация массива очереди или стека потребует большего объема работы для изменения размера, так как необходимо скопировать оригинал в более крупную структуру (или выполнить сбой с ошибкой переполнения).
Это вопрос намерения. Стеки и очереди часто реализуются с использованием массивов и списков, но добавление и удаление элементов определяется более строго.
Стек и очередь являются более продвинутыми способами обрабатывать коллекцию, что сам массив, который не устанавливает ни один порядок в том, как элементы ведут себя в коллекции.
Стек (Lifo - последний в первом выходе) и очередь (FIFO - первое в первую очередь) устанавливает и порядок, в котором ваши элементы вставляются и удалены из коллекции.
Вы можете использовать массив или связанный список в качестве структуры хранения для реализации стека или шаблона очереди. Или даже создать с этими основными структурами более сложные шаблоны, такие как двоичные деревья или приоритетные очереди, которые могут также принести не только порядок в вставке и удалении элементов, но также сортируют их внутри коллекции.
Вы бывали в кафетерии, верно? И видели стопку тарелок? Когда в стопку добавляется чистая тарелка, она ставится сверху. Когда тарелку убирают, ее убирают сверху. Такая система называется "Последний по порядку - первый по порядку" (LIFO). Компьютерная стопка похожа на эту, только в ней хранятся числа, и вы можете сделать ее из массива или списка, если хотите. (Если под стопкой тарелок есть пружина, то говорят, что вы "заталкиваете" одну тарелку на вершину, а когда вы ее убираете, то "отщелкиваете". Вот откуда эти слова.)
В кафетерии идите в заднюю часть, где моют посуду. У них есть конвейер, где в один конец ставят тарелки для мытья, а из другого конца они выходят в том же порядке. Это очередь или First-In-First-Out (FIFO). При желании вы можете создать такую очередь из массива или списка.
Для чего они нужны? Предположим, у вас есть древовидная структура данных (которая похожа на настоящее дерево из дерева, только перевернутое вверх ногами), и вы хотите написать программу для полного прохождения по ней, чтобы распечатать все листья.
Один из способов - это проход в глубину. Вы начинаете со ствола и идете к первой ветви, затем к первой ветви этой ветви, и так далее, пока не дойдете до листа, и печатаете его. Но как вернуться назад, чтобы добраться до следующей ветки? Каждый раз, когда вы спускаетесь по ветке, вы "заталкиваете" некоторую информацию в стек, а когда вы возвращаетесь назад, вы "выталкиваете" ее обратно, и это говорит вам, по какой ветке идти дальше. Так вы отслеживаете, какую ветвь делать следующей в каждой точке.
Другой способ - это проход по ширине. Начиная со ствола, вы нумеруете все ответвления от ствола и заносите эти номера в очередь. Затем вы берете номер с другого конца, идете к этой ветке, и для каждой ветки, отходящей от нее, вы снова нумеруете их (последовательно с первой) и ставите в очередь. Продолжая делать это, вы сначала посетите ветви, которые находятся на расстоянии 1 ветви от ствола. Затем вы посетите все ветви, которые находятся на расстоянии 2 ветвей от ствола, и так далее. В конце концов вы доберетесь до листьев и сможете их распечатать.
Это две очень базовые концепции в программировании.