Викането по индекс става само с int?


0
Здравейте, колеги!
Само с int ли става? Ако имам повече елемента от int.MaxValue в масива, какво да правя?



Отговори



0

Да, макисмалното количество елементи, който може да набуташ в масив е int.MaxValue т.к. вътрешно масива използва int за индексатор.

Ако ти трябват повече елементи, бих ти препоръчал да разгледаш List структурата.

Все пак имай предвид, че и List няма да може да набуташ голяма количество елементи, т.к. програмата ти ще бъде прекратена с OutOfMemoryException.

П.С. Ако не се нуждаеш от всеки елементи в масива, а само от такива с конкретни индекси, примерно трябват ти елементи с индекс 100, 1000 и 10000 ти препоръчвам да ползваш Dictonary т.к. вместо да създаде 10000 елемента, той ще създаде само 3.


от Teodor92 (13062 точки)


0
Индексатора на List не работи ли също с int?

от vphilipov (3591 точки)

0
Прав си, не съм направил достатъчно тестове :)

от Teodor92 (13062 точки)



0
Мисля, че да - индексатора на класа Array работи с int. Каква е ситуацията? Такъв голям масив не е много дора идея. Най-вероятно трябва да смениш структората от данни или да си имплементораш своя.

от vphilipov (3591 точки)


0
"The prime factors of 13195 are 5, 7, 13 and 29.
What is the largest prime factor of the number 600851475143 ?"
Ми реших да правя Sieve of Eratosthenes за това число :D

от kratoz333 (686 точки)

0
Ооооооо, избери си друго число! Аз тази задача я написах с List и за 10 000 000 и трябваха 72ч (виж тук - http://forums.academy.telerik.com/49039/c%23-arrays-15-%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B0?show=53066#a53066).

от vphilipov (3591 точки)



0
По задачата: ситото на Ератостен е overkill за едно единствено число, то намира всички прости числа по-малки или равни от границата.
В случая ти стига и пробно делене (trial division).

от staafl (5770 точки)


0
използвай 2 или 3 мерен масив и просто гледай на него линейно
и ще можеш да адресираш int.maxValue^n
Малко става неудобно ако искаш да извършваш аритметични действия върху индексите, но могат да се представят като някаква извратена бройна система

от bgotov (1559 точки)