Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Visual Basic: Общие вопросы > Почему не работает For Each?


Автор: Сергей85 15.01.17, 11:30
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    ReDim dResults_Massive(iCols_Max - 1, lRows_Max - 1, dFactorial_Max)
     
    g_dTemp = 0
    For Each varTemp In dResults_Massive()
        varTemp = -1
        g_dTemp = g_dTemp + 1
    Next varTemp


g_dTemp, как индикатор, показывает, что пробежка идет по всем элементам массива. Но элементы не изменяют своих значений!

Массив дабловский.

Добавлено
При этом "dResults_Massive(0, 0, 0) = -2" корректно изменяет значения.

Автор: Akina 15.01.17, 13:25
А кто сказал,что For each умеет по массиву?

Автор: Славян 15.01.17, 14:09
Ну отладка показывает, что очень даже умеет.

Автор: Akina 15.01.17, 15:05
Не-а... когда по массиву, то в итератор пишется копия, а когда по коллекции/объекту - то ссылка на оригинал. Тупо потому, что нельзя выбрать из массива элемент или там строку...
Та же разница, что и ByRef/ByVal.

Автор: Славян 15.01.17, 15:55
Ясно. Эх.

Автор: Сергей85 20.01.17, 17:40
Цитата Славян @

Славян, тут по сортировкам информация такая получилась; что, я думаю, вам интересно будет.
Оптимизация алгоритма сортировки Шелла. (сообщение #3703148)

А также прошу ответа на этот вопрос:
Сортировка текста в листбоксе или писать свой код?

Автор: Славян 20.01.17, 18:10
Цитата Сергей85 @
тут по сортировкам информация такая получилась; что, я думаю, вам интересно будет.
Да, я читал вашу беседу. Токмо напрасно вы классику не слушаете. В худшем случае будете получать "ужасную" скорость (N2), а люди всё же стремятся получить и в худшем случае нечто получше, так что лучше всё же вам повертеться в районе быстрой сортировки. :whistle:

Автор: Сергей85 20.01.17, 18:13
Цитата Славян @

Разве инверсия массива с "больше-меньше" на "меньше-больше" - не самый худший из вариантов?

Добавлено
Хотя да, для Шелла, судя по времени, это даже полегче, чем с рэндомом бороться...

Автор: Славян 20.01.17, 18:27
Цитата Сергей85 @
Разве инверсия массива с "больше-меньше" на "меньше-больше" - не самый худший из вариантов?
Ну вики то дочитайте: там же даже конкретные схемы предложены, показывающие и N2 и N1,5 у Шелла, что хуже N*logN (сортировка слиянием). :yes-sad:

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)