powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как вставить элемент в массив?
43 сообщений из 43, показаны все 2 страниц
Как вставить элемент в массив?
    #39234986
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
string[] s = new[] {"1", "2", "3"};



Как вставить элемент "5" в существующий массив, чтобы стало: "1","5","2","3"?
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39234987
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,
Никак! Массивы не изменяемые.
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39234993
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
создать новый массив
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39235000
sanekoffice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если не принципиально, то лучше использовать коллекции. Там есть тетод Insert
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39235016
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanekofficeЕсли не принципиально, то лучше использовать коллекции. Там есть тетод Insert
Вот у этой , например, такого метода нет. Как и у многих других, реализующих ICollection/ICollection<T> - потому как у этих интерфейсов нет такого метода.
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39235020
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныsanekofficeЕсли не принципиально, то лучше использовать коллекции. Там есть тетод Insert
Вот у этой , например, такого метода нет. Как и у многих других, реализующих ICollection/ICollection<T> - потому как у этих интерфейсов нет такого метода.
По правде сказать у коллекций вообще нет метода Insert, он есть у IList<T>/IList.
Array реализует последний, но вставить все равно не получиться)
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39235026
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если вопрос чисто академический, то нужно
А) Создать новый массив размером = размер старого + 1
Б) с помощью метода Array.Copy скопировать левую часть и правую часть массива в новый и задать новый элемент.
или ручками всё сделать =)
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39235088
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВПо правде сказать у коллекций вообще нет метода Insert
Вроде как я именно об этом:
Сон Веры ПавловныКак и у многих других, реализующих ICollection/ICollection<T> - потому как у этих интерфейсов нет такого метода.
ЕвгенийВон есть у IList<T>/IList.
IList/IList<T> расширяют ICollection/ICollection<T> соответственно. Если IList не является коллекцией, то нужно определиться с терминологией - что же всё-таки является коллекцией. Я всегда считал, что коллекция - это то, что имплементит ICollection/ICollection<T>.
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39235112
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныВроде как я именно об этом:

Да сорри, не дочитал, старею.
Сон Веры ПавловныКак и у многих других, реализующих ICollection/ICollection<T> - потому как у этих интерфейсов нет такого метода.
Сон Веры ПавловныIList/IList<T> расширяют ICollection/ICollection<T> соответственно. Если IList не является коллекцией, то нужно определиться с терминологией - что же всё-таки является коллекцией. Я всегда считал, что коллекция - это то, что имплементит ICollection/ICollection<T>.
Лист тоже является коллекцией, но коллекция не является листом.
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39235120
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныЕвгенийВПо правде сказать у коллекций вообще нет метода Insert
Вроде как я именно об этом:
Сон Веры ПавловныКак и у многих других, реализующих ICollection/ICollection<T> - потому как у этих интерфейсов нет такого метода.
ЕвгенийВон есть у IList<T>/IList.
IList/IList<T> расширяют ICollection/ICollection<T> соответственно. Если IList не является коллекцией, то нужно определиться с терминологией - что же всё-таки является коллекцией. Я всегда считал, что коллекция - это то, что имплементит ICollection/ICollection<T>.всё относительно, у Collection<T> и ObservableCollection<T> Insert есть и имплиментирует он IList<T>, ICollection<T> и IEnumerable<T> и т.д. Но называется то коллекцией :)
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39237846
Ermak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В данном конкретном случае студент может поступить так.

Код: c#
1.
2.
3.
4.
  string[] s = new string[] {"1", "2", "3"};
  List<string> l = new List<string>(s);
  l.Insert(1, "5");
  s =  l.ToArray();



PS. Но с темой коллекций в c# студенту все же придется разобраться.
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39237859
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s = s.ToList().Insert(...).ToArray()
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39237860
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предыдущее сообщение не читать, Insert не вернет коллекцию
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39237867
void33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ermak,
и сколько же тут алокаций будет на куче?
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39237868
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
void33Ermak,
и сколько же тут алокаций будет на куче?
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39237869
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вам шашечки или ехать?
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39237875
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Листы вместо массива передайте куда-нибудь, например в Direct3D .....
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39237899
Ermak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторErmak,
и сколько же тут алокаций будет на куче?


Студенты аллокаций на куче не считают.

PS. Студент запросил помощь. Студент получил помощь, соизмеримую с его уровнем владением предмета.
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39237920
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErmakавторErmak,
и сколько же тут алокаций будет на куче?


Студенты аллокаций на куче не считают.

PS. Студент запросил помощь. Студент получил помощь, соизмеримую с его уровнем владением предмета.
Вообще-то студентам про структуры данных рассказывают в институтах, так что не стесняйтесь :)
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39237951
Ermak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВообще-то студентам про структуры данных рассказывают в институтах, так что не стесняйтесь :)

Согласен

ErmakPS. Но с темой коллекций в c# студенту все же придется разобраться.

PPS. Оставляю данную тему, студенту для самостоятельной работы ;)
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39238041
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErmakВ данном конкретном случае студент может поступить так.

Код: c#
1.
2.
3.
4.
  string[] s = new string[] {"1", "2", "3"};
  List<string> l = new List<string>(s);
  l.Insert(1, "5");
  s =  l.ToArray();



PS. Но с темой коллекций в c# студенту все же придется разобраться.

Ваш пример, коллега, пересыпает массив из одного места в другое, так и я могу. А вопрос был по вставке в середину, т.е. с минимумом "колбасинга"
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39238050
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинА вопрос был по вставке в середину, т.е. с минимумом "колбасинга"


С минимумом колбасинга не получится. Можно еще извращаться в плане заранее создать массив на 1 элемент больше (последний элемент = 0), выводимый размер - на 1 меньше. Когда надо вставить, то банальный сдвиг и вставка, выводимый размер += 1. Но надо ли такое извращение?
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39238214
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для вставки и удаления лучше подходит LinkedList
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39238275
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Вот как надо в массив член вставлять!
Код: c#
1.
2.
            var массив = (new List<int>() { 1, 2, 3 });
            массив.Insert(0, 0);
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39238293
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Вот как надо в массив член вставлять!
Извиняюсь за оффтопСильно сказано. Элементы без члена это как-то неправильно
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39238404
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Вот как надо в массив член вставлять!
Код: c#
1.
2.
            var массив = (new List<int>() { 1, 2, 3 });
            массив.Insert(0, 0);



Введение члена в заблуждение ;-)
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39238418
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

самое главное, при вводе члена, использовать только безопасный доступ
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39238509
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВДля вставки и удаления лучше подходит LinkedList
упоротые - вопрос был по массиву (и на то бывают веские причины)
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39238601
void33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pallaris,
Вам шашечки или ехать vs Цель оправдывает средства, равнозначно , хотя второе краеугольный камень идеологии фашизма
и коммунизма, можно привести кучу исторических примеров и примеров из быта ( облегчить нужду - цель, насрать в подъезде- средство) вы просто своим кодом нарсрали в памяти, впрочем это ничего ( дело личное), но вы же учите ( как вы говорите) студента
так же срать,( хотя то же ничего - для личного потребления, но только личного)
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39238605
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насрать в память это "наше все" в C#. Не срать - тройной кульбит в коде, работает быстро, но букав много и непонятно как оно вообще работает. Тут проще С++ освоить.
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39238618
void33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T,
а что тут сложного,
выделить память под массив n+1
скопировать элементы из строго массива до индекса вставки в новый
вставить новый элемент в новый
скопировать элементы из строго массива после индекса вставки в новый массив.
итого пять строчек примитивного кода..??
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39238620
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
void33выделить память под массив n+1
скопировать элементы из строго массива до индекса вставки в новый
вставить новый элемент в новый
Описанное и "насрать в память" чем отличается? ИМХУ одно и тоже
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39238622
void33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T,
тем что, ты выделяешь память 1 раз а не 3
а теперь представь что массивы очень большие и в цикле и что у тебя произойдет с большой кучей?
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39238635
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
void33Dima T,
тем что, ты выделяешь память 1 раз а не 3
а теперь представь что массивы очень большие и в цикле и что у тебя произойдет с большой кучей?

да, кстати
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39238700
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
void33а теперь представь что массивы очень большие и в цикле и что у тебя произойдет с большой кучей?

И представь что это микроконтроллер, управляющий ракетоносителем для вывода сферического коня в вакуум. Фантазеры
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39238702
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Причем от создателя топика ни уточнений по тз, ни пояснений, один троллинг
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39240069
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PallarisПричем от создателя топика ни уточнений по тз, ни пояснений, один троллинг

какой нафиг троллинг? и какие пояснения еще нужны?
Задал вопрос, как добавить элементв массив.
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39240194
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупинкакой нафиг троллинг? и какие пояснения еще нужны?
Задал вопрос, как добавить элементв массив.
Ну посмотрели бы в исходниках , как реализован метод Insert у List<T> (который просто враппер над массивом):
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
        public void Insert(int index, T item) {
            // Note that insertions at the end are legal.
            if ((uint) index > (uint)_size) {
                ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.index, ExceptionResource.ArgumentOutOfRange_ListInsert);
            }
            Contract.EndContractBlock();
            if (_size == _items.Length) EnsureCapacity(_size + 1);
            if (index < _size) {
                Array.Copy(_items, index, _items, index + 1, _size - index);
            }
            _items[index] = item;
            _size++;            
            _version++;
        }


_items в классе определен как
Код: c#
1.
        private T[] _items;
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39240475
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Сон Веры Павловны,
И зачем нам это смотреть?
Мы и так знаем, что в List можно вставить элемент
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39240552
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Сон Веры Павловны,
И зачем нам это смотреть?
Мы и так знаем, что в List можно вставить элемент
Еще раз:
Сон Веры ПавловныList<T> (который просто враппер над массивом)
соответственно, вставка в List<T> - это вставка в массив. Посмотрев реализацию этой вставки, можно было бы не задаваться вопросом темы.
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39240602
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Сон Веры ПавловныCat2Сон Веры Павловны,
И зачем нам это смотреть?
Мы и так знаем, что в List можно вставить элемент
Еще раз:
Сон Веры ПавловныList<T> (который просто враппер над массивом)
соответственно, вставка в List<T> - это вставка в массив. Посмотрев реализацию этой вставки, можно было бы не задаваться вопросом темы.
Меня тоже очень удивило и огорчило при первом знакомстве с C#, что обычные массивы почему-то сделаны фиксированной длины и для динамических массивов зачем-то придумали ArrayList
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39240858
void33
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ролг Хупин,
это же очень просто, писал ранее
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
     private static T[] Add<T>(T[] array, T element, int index )
        {
            var res=new T[array.Length+1];
            for (var i = 0; i < index; i++)
                res[i] = array[i];
            res[index] = element;
            for (var i = index; i < array.Length; i++)
                res[i + 1] = array[i];
            return res;
        }


выход за размерность проверяйте сами..
...
Рейтинг: 0 / 0
Как вставить элемент в массив?
    #39240885
Фотография Macks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВЛист тоже является коллекцией, но коллекция не является листом.

Лист является коллекцией, но не любая коллекция является листом.
...
Рейтинг: 0 / 0
43 сообщений из 43, показаны все 2 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как вставить элемент в массив?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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