-338 / 245 / 26
Регистрация: 01.06.2018
Сообщений: 3,137
|
||||||
1 | ||||||
Как правильно воспользоваться List<T>?14.12.2018, 07:23. Показов 1757. Ответов 31
Метки нет (Все метки)
На данный момент самое сложное что использую это
Лондон Париж Москва вроде понятно как работает и как пользоваться. Но есть интерес загрузить данные из файла, где в одной строке будет 10 чисел, если весь массив представлять как матрицу, то размерность будет 10 столбцов на Х строк. Где Х зависит от файла и заранее неизвестно. То есть данные представлены как: 0, 10, 345, 12, 18, 6, 2, 364, 23, 53 20, 510, 7345, 142, 128, 556, 20, 3164, 3, 3 80, 610, 4, 1, 86, 63, 12, 4, 2223, 153 Как мне организовать List<T> в этом случае?
0
|
14.12.2018, 07:23 | |
Ответы с готовыми решениями:
31
Как правильно записать данные в List? List<T> => DataTable => DataGridView: как правильно? Как правильно забиндить List<string> к ComboBox Подскажите как правильно сделать вывод list<> в ListVew |
-338 / 245 / 26
Регистрация: 01.06.2018
Сообщений: 3,137
|
|
17.12.2018, 12:52 [ТС] | 21 |
Вовсе нет. Все люди разные. Я не запоминаю вещи если ими не пользуюсь. Моя супруга помнит всю школьную программу, но совершенно не способна водить автомобиль.
Только те что могут пригодиться. Какие именно - узнаю по ходу пьесы. Как раз для меня метод тука самый эффективный, потому что читая я не запоминаю и тем более не написав код я вообще не понимаю о чем написано в книге. У меня огромный опыт написания софта на Делфи, даже коммерческого, я его писал и продавал. При этом было много книг, в которые заглядывал вместо гугла, сейчас есть гугл, читать нет смысла. Я на питоне писал примерно месяц, написал, пользовался софтом. Было это лет 3-5 назад. Сейчас я уверен не напишу и строчки, нужно опять читать и смотреть код. При этом, как сами понимаете - я не становлюсь профессиональнее в программировании, но у меня и нет такой потребности. Поэтому для моих локальных задач такой подход вполне годится. Я 90% кода новой программы пишу копируя код из прошлой программы, я не помню как пишется та или иная команда, исключениями являются if, for, остальное только копи-паст. Ну и гугл.
0
|
12083 / 8391 / 1283
Регистрация: 21.01.2016
Сообщений: 31,617
|
|
17.12.2018, 13:55 | 22 |
Особенность "базовых вещей" (азов) как раз в том, что они нужны всегда, ибо вы с ними сталкивается сразу же. Как с теми же ссылочными типами. Без малейшего понимания тех же ссылочных типов, вы даже с простейшим случаем использования массива не справились без подсказки извне. Это, конечно, дело ваше, методом тыка работать, или более-менее уверенно продвигаться в решении задачи, но я бы очень скоро устал как слепой палочкой тыкать в пространство)
Эффективный подход - читать и практиковаться одновременно, а не впадать в крайности (или только читать, или сразу за клавиатуру хвататься). Ладно, не будем демагогию разводить. Не хотите основательные структурированные знания получать - ладно. Я с вами своей точкой зрения на это поделился: специалистом с таким подходом не стать.
0
|
-338 / 245 / 26
Регистрация: 01.06.2018
Сообщений: 3,137
|
|
18.12.2018, 05:13 [ТС] | 23 |
в книжке 700 страниц. сделал первый урок - молодец, а 88 урок я сделаю через 3-4 месяца начисто забыв что было в первом уроке.
Вы неверное смотрите на ситуацию, я не не хочу, я просто не в состоянии их получать таким способом - особенность такая, багофича. И нет цели такой.
0
|
544 / 352 / 119
Регистрация: 17.08.2014
Сообщений: 1,335
|
||||||
18.12.2018, 07:49 | 24 | |||||
belalugoci, можно сделать
1
|
-338 / 245 / 26
Регистрация: 01.06.2018
Сообщений: 3,137
|
|
18.12.2018, 09:22 [ТС] | 25 |
приму к сведению. но нет задачи делать что-то динамическое по столбцам, достаточно Add для строк.
0
|
544 / 352 / 119
Регистрация: 17.08.2014
Сообщений: 1,335
|
|
18.12.2018, 11:00 | 26 |
belalugoci, в случае с массивами вам нужно либо сразу инициализировать длину, либо ее изменять методом resize перед вставкой. Тут же происходит все динамически.
Добавлено через 8 минут belalugoci, А вообще то что вы написали очень похоже на csv файл в котором обязательно есть шапка. если так то лучше сразу описать класс в котором делать атрибут заголовка. И уже по этому заголовку делать парсинг записи. Далее уже будете работать с листом объектов.
0
|
12083 / 8391 / 1283
Регистрация: 21.01.2016
Сообщений: 31,617
|
|
18.12.2018, 11:11 | 27 |
Andreyip, если количество элементов заранее, то какие проблемы использовать массив?
0
|
-338 / 245 / 26
Регистрация: 01.06.2018
Сообщений: 3,137
|
||||||
18.12.2018, 11:24 [ТС] | 28 | |||||
В теме написано "Но есть интерес загрузить данные из файла, где в одной строке будет 10 чисел", то есть int[10]. В любом случае ваш вариант останется в теме и при необходимости я его использую как шаблон. Спасибо.
Почти так, но я думаю что
0
|
544 / 352 / 119
Регистрация: 17.08.2014
Сообщений: 1,335
|
|
18.12.2018, 11:26 | 29 |
Usaga, Если количество элементов известно значит и известно что это за элементы и какого типа, а значит нет смысла использовать массив, лучше сразу описать нормально объект. А то очень часто вижу что люди приходят в C# с javascript или с php и начинают все пихать в массивы как изначально привыкли вместо того чтобы описать нормально модель данных.
0
|
12083 / 8391 / 1283
Регистрация: 21.01.2016
Сообщений: 31,617
|
|
18.12.2018, 11:45 | 30 |
Andreyip, да, объект собственный (типизированное представление) было бы наиболее правильным. Но не всегда это доступно. Я же имел в виду другой момент: если нам количество элементов можно узнать заранее (на этапе исполнения), то можно использовать массивы, а не
List<T> . Чутка меньше памяти уйдёт.Но для ТС-а, судя по всему, вообще разницы никакой нет, лишь бы работало.
0
|
-338 / 245 / 26
Регистрация: 01.06.2018
Сообщений: 3,137
|
|
18.12.2018, 11:52 [ТС] | 31 |
не мне с вами спорить, меня тут не любят и не любят мой подход к разработке (он странный и очень ненормальный), но мне кажется простота работы с данными и время разработки - важные критерии и если нужно только прочитать файлик и посчитать данные, то разрабатывать "нормальный объект" - это перебор.
Опять же я не силен в том что именно быстрее работает и меньше занимает оперативной памяти, но объекты (имхо) будут работать медленее, нет? Не зря вот указали на unsafe вариант при работе через указатели где выигрыш в скорости в разы. Добавлено через 1 минуту Разница есть на этапе оптимизации, если программа проживёт достаточно долго чтобы до такого добраться. Но в целом вы верно понимаете моё программерское кредо. Добавлено через 3 минуты а как использовать массивы в такой конструкции? и не будет ли resize выделять новую кучу и тупо копировать существующий массив в новую память? не будет ли это накладно?
0
|
12083 / 8391 / 1283
Регистрация: 21.01.2016
Сообщений: 31,617
|
|
18.12.2018, 13:12 | 32 |
Массив имеет смысл использовать, когда вы можете сразу определить количество элементов, что в нём должны храниться. Тогда вы можете сразу создать массив нужного размера. В противном случае, придётся выбрать другую структура данных, расширяемую.
Упомянутый выше List<T> как раз основан на массиве, которые пересоздаётся с ростом количества данных. Так, что вручную массивами жонглируйте или через List<T> - разницы не будет. Просто List<T> уже написан и отлажен)
1
|
18.12.2018, 13:12 | |
18.12.2018, 13:12 | |
Помогаю со студенческими работами здесь
32
Как правильно "прибиндить" объект коллекции List<string> к ListBox Как воспользоваться set_intersection для двух list<string> Как правильно воспользоваться функцией if? Как правильно воспользоваться шаблоном [MFC] Как правильно воспользоваться радиобаттонами? Your content must have a ListView whose id attribute is 'android.R.id.list' - как правильно создать адаптор ? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |