Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Сдвиг элементов массива / 10 сообщений из 10, страница 1 из 1
27.02.2014, 12:07
    #38573943
webber81
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сдвиг элементов массива
Есть массив
Код: c#
1.
2.
3.
4.
for (int i=0; i<1000000; i++)
{
	nums[i] = i;
}



Как вставить например такой элемент
nums[100] = 234;
Чтобы все последующие элементы сдвинулись на одну позицию (без переприсваивания элементов)?
...
Рейтинг: 0 / 0
27.02.2014, 12:13
    #38573953
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сдвиг элементов массива
webber81Чтобы все последующие элементы сдвинулись на одну позицию (без переприсваивания элементов)?В массиве - никак. Но можно посмотреть на Связный список .
...
Рейтинг: 0 / 0
27.02.2014, 12:27
    #38573972
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сдвиг элементов массива
Код: c#
1.
2.
3.
List<int> l = new List<int>();
l.InsertRange(0,nums); 
l.Insert(100, 234);
...
Рейтинг: 0 / 0
27.02.2014, 13:09
    #38574050
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сдвиг элементов массива
Pallaris
Код: c#
1.
2.
3.
List<int> l = new List<int>();
l.InsertRange(0,nums); 
l.Insert(100, 234);


Для таких операций оптимизирован LinkedList .
...
Рейтинг: 0 / 0
27.02.2014, 13:16
    #38574061
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сдвиг элементов массива
Pallaris
Код: c#
1.
2.
3.
List<int> l = new List<int>();
l.InsertRange(0,nums); 
l.Insert(100, 234);

ТСу требуется без переприсваивания элементов
...
Рейтинг: 0 / 0
27.02.2014, 13:54
    #38574131
D129
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сдвиг элементов массива
Алексей КВ массиве - никак.
+1

Добавить элемент в массив без "переприсваивания" - ну это как ... вставить звено в цепь без разьединения самой цепи.
...
Рейтинг: 0 / 0
27.02.2014, 13:59
    #38574140
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сдвиг элементов массива
skyANAPallaris
Код: c#
1.
2.
3.
List<int> l = new List<int>();
l.InsertRange(0,nums); 
l.Insert(100, 234);

ТСу требуется без переприсваивания элементов

А там переприсваивание происходит? Ну... его не видно зато :)
...
Рейтинг: 0 / 0
27.02.2014, 14:29
    #38574201
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сдвиг элементов массива
PallarisskyANAпропущено...
ТСу требуется без переприсваивания элементов

А там переприсваивание происходит? Ну... его не видно зато :)Учимся читать документацию:

List<T>.Insert Method
Remarks If Count already equals Capacity, the capacity of the List<T> is increased by automatically reallocating the internal array, and the existing elements are copied to the new array before the new element is added.
If index is equal to Count, item is added to the end of List<T>.
This method is an O(n) operation, where n is Count.
...
Рейтинг: 0 / 0
27.02.2014, 14:30
    #38574203
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сдвиг элементов массива
Если MSDN-а мало, то decompiler в помощь
...
Рейтинг: 0 / 0
27.02.2014, 17:38
    #38574528
pation
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сдвиг элементов массива
webber81Есть массив
Код: c#
1.
2.
3.
4.
for (int i=0; i<1000000; i++)
{
	nums[i] = i;
}




Как вставить например такой элемент
nums[100] = 234;
Чтобы все последующие элементы сдвинулись на одну позицию (без переприсваивания элементов)?
=)))))))))))))
Код: c#
1.
nums = nums.SelectMany((n, i) => i == 100 ? new[] { 234, i } : new[] { i }).ToArray();
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Сдвиг элементов массива / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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