c # indexer для списка списка - PullRequest
0 голосов
/ 16 мая 2011

Привет всем, я хочу сделать индексатор для списка списка, чтобы получить элементы, подобные этому myopj [i, j].моя структура данных выглядит следующим образом:

list<list<doubl>>

я пытаюсь подобный код, но он не работаетзакончи часы.

пожалуйста, кто-нибудь может помочь

и поблагодарить за все.

Ответы [ 4 ]

2 голосов
/ 16 мая 2011

Кажется довольно странным, что ваш value является либо list<T>, либо T.

Без дополнительной информации я предлагаю вам реализовать это, используя один длинный список T. Затем вы переведете myList<T>[i,j] на базовый list<T>[ i * numRows + j].

Посыпать проверки по мере необходимости.

Если вы действительно, действительно должны использовать списки списков, выясните, хотите ли вы получить прямоугольную матрицу (то есть список в строке i имеет то же количество элементов, что и список в строке j), или в шахматном порядке (где каждый список имеет независимое количество элементов). Если вы в первом случае, подумайте о создании и заполнении списков строк автоматически с соответствующим количеством элементов (используйте default<T> для их инициализации)

Обновление:

Тогда, если вам действительно нужна прямоугольная матрица, используйте список. Он будет иметь элементы numRows * numColumns. Представьте, что вместо того, чтобы поместить одну строку под другую, чтобы создать матрицу, вы размещаете элементы строки один за другим.

Итак, если у вас есть: 11 12 13 21 22 23 31 32 33

в форме списка они будут 11 12 13 21 22 23 31 32 33

Существует простое преобразование между координатами X и Y (или i и j) в первой форме и индексом в списке во второй форме.

2 голосов
/ 16 мая 2011

Вы должны проверять количество, а не емкость. Capacity - это количество элементов в списке, Count - это фактическое количество элементов в вашем списке.Таким образом, учитывая список, который не является нулевым, емкость НИКОГДА не должна быть равна нулю, но количество может быть.

1 голос
/ 16 мая 2011

Почему вы проверяете емкость? Скорее всего, он никогда не будет нулевым. Вы хотели проверить Count?

1 голос
/ 16 мая 2011

Вам нужно свойство длины, а не Capactiy.

Использование:

 if (this.list1.Count < r )

Ваш алгоритм не имеет особого смысла, возможно, вы захотите описать то, что вы пытаетесьвыполнить.Похоже, вы пытаетесь заставить его расти, если он недостаточно велик, но логика в двух отдельных путях (если еще) не совпадает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...