|
|
|||||
Регистрация: Oct 2013
Сообщений: 126
|
Переход с массивов на векторы
Часто встречав советы по использованию векторов вместо массивов для увеличения производительности решил перейти с массивов на векторы.
Заметил, что манипуляции с векторами, по сравнению с массивами, - это страшный геморрой: Создать новый массив: var ar:Array=[] Создать новый вектор: var v:Vector.<uint>=new Vector.<uint>(); Создать новый массив с заданными значениями элементов: var ar:Array=[1,2,3] Создать новый вектор с заданными значениями элементов: var v:Vector.<uint>=new <uint>[1,2,3]; Ладно, с созданием можно смириться, код печатать пальцы не отсохнут, но перейдём к обнулению. Как замечательно и лакончино всё делается с массивом: ar=[], и в четыре раз длиннее код для вектора: v=new Vector.<uint>(), при том, что меня терзают сомнения в том, что это лучший способ обнуления вектора. Идею двумерных векторов я и подавно оставил - там, где, используя массив, можно было лакончино написать ar=[[],[],[]], для вектора приходится строчить целый роман! Всё моё нытьё, видимо, с непривычки и от незнания, хотя почитал справку, форум, попробовал на практике. Поэтому посоветуйте, пожалуйста, есть ли способы такого же лаконичного объявления и обнуления векторов, как в случае с массивами? |
|
|||||
Присвоение нового массива это не обнуление.
Вот варианты обнуления. Я вам больше скажу - в вектор нельзя пихать разнородные данные, только однонтипные. Так что это совсем страшная штука, не надо их использовать
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
Регистрация: Oct 2013
Сообщений: 126
|
я неточно выразился. мне нужно было обнуление старого и создание нового пустого массива, а это, как я понимаю, всё-таки arr=[]. Правда, я не знаю, куда при этом девается старый массив, я думал, что он как раз стирается. Буду признателен за пояснение этого нюанса.
Цитата:
, но для вектора это всё равно каша типа Vector.<Vector.<Object>> - с этим я голову ломаю до сих пор. |
|
|||||
С этим ломать голову не надо. Этого просто не нужно делать.
Вектор быстрее работает только с типизированными данными. Если пихать в него нетипизированный обжект то а в чем смысл? Добавлено через 4 минуты Цитата:
Так как вы показали в самом начале это не зануление массива, а зануление одной текущей ссылки.
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Не задуряйтесь. Вектор не даст Вам той производительности, о которой Вы думаете. Пишите код так, чтобы Вам хорошо было. Вам же с ним работать.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
я тоже раньше думал, что вектор даст прирост производительности, но сейчас склоняюсь к ассоциативным + к классам с одними значениями.
|
|
|||||
Цитата:
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Цитата:
А ещё наверное забыли, что когда то, когда ещё не понимали разницы между массивом и вектором, пытались всё засунуть в массивы и использовать их везде. И вот если у ТС похожая проблема, то я и сказал, что тоже так думал, но это не так. Если я раньше думал, что в массивы нужно сувать всё, то теперь даже не знаю в каких случаях вектор даст прирост производительности. Наверное, если в него нужно положить миллион элементов, то тогда его стоит использовать. |
Часовой пояс GMT +4, время: 04:49. |
|
« Предыдущая тема | Следующая тема » |
|
|