powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как обрезать массив?
25 сообщений из 54, страница 1 из 3
Как обрезать массив?
    #39282930
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем!
Собственно сабж...: имеем массив длиною Lm, нужно оставить его обрезать, те удалить всё, начиная с Cm?
(оба числа > int.MaxValue, те Array.Resize не пойдёт) + по понятным причинам тоже не выход:
Код: c#
1.
2.
3.
4.
                uint[] result = new uint[counter + 1];
                for (uint i = 1; i <= counter; i++)
                    result[i] = List[i];
                List = result;


Заранее спасибо ВС
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39282954
Andrey1306
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Take
Skip

от List<int> не подойдет ?
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39282958
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
используй List<int> у него внутри массив.
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39282962
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tиспользуй List<int> у него внутри массив.
внутре у него неонка(c).
ТС - Take/Skip тебе в помощь (это linq)
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39282965
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
какой List? повторяю: > int.MaxValue, тут только массив(((
иначе вылет из памяти(((
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39282969
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прежде чем LINQ советовать повнимательнее почитайте
v skopinоба числа > int.MaxValue
int.MaxValue это 2 лярда если что. Если uint то занимают 8+ Гб, а вы копию делать предлагаете.
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39282978
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TПрежде чем LINQ советовать повнимательнее почитайте
v skopinоба числа > int.MaxValue
int.MaxValue это 2 лярда если что. Если uint то занимают 8+ Гб, а вы копию делать предлагаете.

ну пихать такое в один массив это из той же серии, что предлагать работать с ним чз linq, не?
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39282983
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v skopinкакой List? повторяю: > int.MaxValue, тут только массив(((
иначе вылет из памяти(((
Точно, там int в индексе. Можешь сделать на его основе свою обертку с uint List.cs
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39282989
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сам массив ты никак не ужмешь, т.к. все варианты "ужимания" через копирование.
https://msdn.microsoft.com/ru-ru/library/bb348051(v=vs.100).aspx Array.Resize<T> - метод
...
Заметки

Этот метод выделяет новый массив заданного размера, копирует элементы из старого массива в новый, а затем заменяет старый массив новым.
поэтому делать свою обертку, которая просто сэмулирует ужимание, а массив останется как был.
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39282993
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TМожешь сделать на его основе свою обертку с > int.MaxValue List.cs а что там можно тупо с int на uint переделать?
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39282997
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tv skopinкакой List? повторяю: > int.MaxValue, тут только массив(((
иначе вылет из памяти(((
Точно, там int в индексе. Можешь сделать на его основе свою обертку с uint List.cs

ага. а лист, по-вашему конечно же не создает нового инстанса массива при изменении размерности?
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283000
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a как работает Take?
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283001
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v skopina как работает Take?
как-то так
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283009
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!,

там ничего о механизме выполнения..., те, полагаю, тоже создаёт буферный ...
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283011
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!Dima Tпропущено...

Точно, там int в индексе. Можешь сделать на его основе свою обертку с uint List.cs

ага. а лист, по-вашему конечно же не создает нового инстанса массива при изменении размерности?
Для уменьшения размера вполне возможно оставить исходный массив тем же и используя его съэмулировать меньший.
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283012
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да и вообще: linq жрёт ресурс...
может как-то с++ приладить?
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283017
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TДля уменьшения размера вполне возможно оставить исходный массив тем же и используя его съэмулировать меньший.А вот это мысль! переписать равенство... может как-то отдельным потоком обрезать?
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283022
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v skopinда и вообще: linq жрёт ресурс...
Потому и жрет, т.к. каждый результат это новый массив.
v skopinможет как-то с++ приладить?
А что конкретно надо с обрезанным массивом делать дальше?
Может тупо завести переменную
Код: c#
1.
uint MyBigArrayLenght;


и использовать ее вместо
Код: c#
1.
MyBigArray.Lenght
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283026
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v skopinда и вообще: linq жрёт ресурс...
может как-то с++ приладить?

ага. смотря с чем сравнивать, если монтулить свой лист, то не жрет :D
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283027
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть же LongLength...
размер, кстати <uint.MaxValue
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283029
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!ага. смотря с чем сравнивать, если монтулить свой лист, то не жрет :Dтам же как-то можно память напрямую обрезать...
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283033
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то так сделать: <какая-то хрень SetMemory(A, counter * sizeof(uint))>

PS
Код: c#
1.
2.
3.
4.
5.
        /// <summary>
        /// Создание усечённого списка
        /// </summary>
        /// <param name="condition">Условие, при котором элемент должен быть удалён</param>
        public abstract void Cut(Predicate<uint> condition);
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283036
v skopin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PPS
после вот этого использую:
Код: c#
1.
2.
3.
4.
5.
6.
            uint counter = 0;
            for (uint i = 1; i < UCount; i++)
                if (!condition(i))
                {
                    List[++counter] = List[i];
                }
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283043
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TПотому и жрет, т.к. каждый результат это новый массив.
что за бред, Linq работает с Enumerator'ом и ни какие массивы не возвращает. только перечисление.
...
Рейтинг: 0 / 0
Как обрезать массив?
    #39283049
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesDima TПотому и жрет, т.к. каждый результат это новый массив.
что за бред, Linq работает с Enumerator'ом и ни какие массивы не возвращает. только перечисление.
вот-вот.
...
Рейтинг: 0 / 0
25 сообщений из 54, страница 1 из 3
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как обрезать массив?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]