Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 18.12.2012, 17:49
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 21  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Цитата:
Массивы и векторы - это коллекции в которых разрешены повторения.
Что за повторения?
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 18.12.2012, 18:04
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 22  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
[1, 2, 1]
Элемент `1' повторяется в коллекции 2 раза:
{"a" : 1, "a" : 2}
Повторения запрещены, `a' нельзя повторять.
__________________
Hell is the possibility of sanity

Старый 18.12.2012, 18:12
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 23  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Умм... А правильно тут сравнивать ключ объекта и значение массива? Значения то и там и там могут повторяться, а ключи нет.

Старый 18.12.2012, 18:12
Sintesis вне форума Посмотреть профиль Отправить личное сообщение для Sintesis Найти все сообщения от Sintesis
  № 24  
Ответить с цитированием
Sintesis
 
Аватар для Sintesis

Регистрация: Jul 2008
Сообщений: 912
Dictionary к стати наследуется от Object, может там конечно многое переопределяется, но всё-же.

Старый 18.12.2012, 18:13
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 25  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Цитата:
Сообщение от wvxvw Посмотреть сообщение
[1, 2, 1]
Элемент `1' повторяется в коллекции 2 раза:
{"a" : 1, "a" : 2}
Повторения запрещены, `a' нельзя повторять.
udaаff прав

Добавлено через 4 минуты
Цитата:
Dictionary к стати наследуется от Object, может там конечно многое переопределяется, но всё-же.
:о) Почти все наследуется от Object.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 18.12.2012, 18:22
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 26  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Array - хитрореализованный список, до того хитрый, что добавление элементов с конца работает медленнее чем с 0-го (что нонсенс для Vector из С++ или List из C#)
Доступ по индексу за 0(1), удаление произвольного элемента за 0(N) - можно считать просто динамическим массивом.
В отличие от Vector - у Array доступ по индексу в 2 раза медленнее и не кидает исключений при выходе индекса за границы

Непонятно зачем, но может работать как хештаблица
Однако, если в качестве ключа в него попадёт "132423345" и сконвертится в числовой индекс - моментально огребёте с памятью. Ну и если большие числовые индексы задавать - тоже самое будет - я бы в качестве хеша не юзал.
Еще при использовании в качестве ассоциативного массива свойство lengh - вообще показывает неизвестно что, а не общее количество элементов.

Vector - Предсказуемый тип, работает практически так же как Vector из stl С++ или List из C#
Возможна типизация элементов
Но невозможны преобразования:
Код AS3:
var a:Vector<DisplayObject> = new Vector<Sprite>();// не сработает - а ведь Sprite - наследник DisplayObject
Object - он же динамический объект, он же предок всего и вся, он же Хеш-таблица
Причём, то, что он предок всего - не означает, что всё может работать как хеш-таблица. Такая вот забавная организация типов.
Если использовать как хеш-таблицу:
- любой ключ конвертирует в строку - поэтому с памятю как в случае с Array не огребёте
- но из-за этой конвертации теряет в производительности, если использовать числовые ключи
(object[13234] эквивалентно object["13234"])

Dictionary
Тоже хештаблица, но ключами могут быть любые объекты.
Со строковыми ключами работает с той же скоростью, что и Object, с числовыми не помню - но по крайней мере не шибко медленнее Object.
Применяется если в качестве ключа удобнее использовать объект, а не строку или число.

Старый 18.12.2012, 18:25
Sintesis вне форума Посмотреть профиль Отправить личное сообщение для Sintesis Найти все сообщения от Sintesis
  № 27  
Ответить с цитированием
Sintesis
 
Аватар для Sintesis

Регистрация: Jul 2008
Сообщений: 912
Вот наглядный тест:

PerformanceTestDemo.swf   (26.6 Кб)

Можно делать так-же связанные списки, в тесе они есть, то-же очень быстрые конкуренты аррею и вектору, а вот словарь и объект сильно проигрывают всем.
Вложения
Тип файла: swf PerformanceTestDemo.swf (26.6 Кб, 311 просмотров)


Последний раз редактировалось Sintesis; 18.12.2012 в 18:51.
Старый 18.12.2012, 18:31
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 28  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Цитата:
Сообщение от expl Посмотреть сообщение
Однако, если в качестве ключа в него попадёт "132423345" и сконвертится в числовой индекс - моментально огребёте с памятью. Ну и если большие числовые индексы задавать - тоже самое будет - я бы в качестве хеша не юзал.
Нет, заметно не огребёте. Я это даже как-то использовал, вектор у меня сдувался по памяти, а массив работал. Немного писал про это http://www.flasher.ru/forum/blog.php?b=451
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 18.12.2012, 18:33
Nooob вне форума Посмотреть профиль Отправить личное сообщение для Nooob Найти все сообщения от Nooob
  № 29  
Ответить с цитированием
Nooob
 
Аватар для Nooob

Регистрация: Mar 2007
Сообщений: 319
Цитата:
Сообщение от wvxvw Посмотреть сообщение
хранение ключей примитивных типов в Dictionary работает следующим образом: сначала простые типы конвертируются в строку, а потом...
не все простые типы конвертируются в строку. но и наоборот строка с числом конвертируется в число
Код AS3:
			var d:Dictionary = new Dictionary();
			d["100"] = 0;
			d["a"] = 0;
 
			for (var key:* in d)
			{
				trace(key, "is Number", key is Number);
				trace(key, "is String", key is String);
			}
			//100 is Number true
			//100 is String false
			//a is Number false
			//a is String true
Так вот, чтобы избежать лишней конвертации следует хранить в хеш-таблицах так:
Ключи типа String только в Object
Ключи типа int, uint, Number, ссылки на объекты в Dictionary

Старый 18.12.2012, 18:47
Simplifier вне форума Посмотреть профиль Отправить личное сообщение для Simplifier Найти все сообщения от Simplifier
  № 30  
Ответить с цитированием
Simplifier

Регистрация: Jun 2011
Сообщений: 60
Цитата:
Хеш-таблицы - это коллекции в которых запрещены повторения
Есть хеш-множества, в них действительно запрещены повторы, так как ключи для элементов подсчитываются автоматически на основе собственно значения элемента.
А есть хеш-карты, в них ключи задаются произвольно самим пользователем и запрета на повторы нет. Хеш, по которому производится поиск, в картах считается именно для ключей. Поэтому не могут повторяться ключи, но сами элементы вполне могут содержаться в карте несколько раз.
Экземпляры Object - это как раз скорей карты и повторы в них не запрещены.

Создать новую тему Ответ Часовой пояс GMT +4, время: 10:11.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 10:11.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.