Есть ли способ «вырастить» мой массив при продолжении моей программы? - PullRequest
1 голос
/ 04 декабря 2011

Я создаю генератор простых чисел в c ++, используя массив для хранения простых чисел по мере их нахождения, а затем использую их для проверки потенциалов позже.Есть ли способ «увеличить» мой массив при продолжении моей программы?

Ответы [ 7 ]

6 голосов
/ 04 декабря 2011

См. Стандартный: вектор.http://new.cplusplus.com/reference/stl/vector/

2 голосов
/ 04 декабря 2011

Я бы использовал std: vector примерно так:

vector<int> primes;

тогда вы добавите простые числа, используя:

primes.push_back(2);

и получить значения из вектора с помощью:

primes[0];

Удачи!

1 голос
/ 04 декабря 2011

Вы можете использовать шаблон std::vector и метод reserve на основе верхней границы для функции подсчета простых чисел .

1 голос
/ 04 декабря 2011

Похоже, вам нужен вектор для хранения простых чисел.

0 голосов
/ 06 декабря 2011

Если есть какой-либо изначально известный предел, к которому вы собираетесь перейти, вы можете просто вычислить длину нужного вам массива с помощью этой простой формулы:

let N - это тот предел, а LENGTH - необходимая длина массива, поэтому

LENGTH = N / log(N)

, где log(N) - натуральный логарифм N

для получения дополнительной информации, см .: Теорема распределения простых чисел .

0 голосов
/ 04 декабря 2011

Обычные случаи, когда возникает такая потребность, также требуют эффективной операции поиска. Мой опыт состоит в том, чтобы перейти на std::map, что делает жизнь намного проще, чем векторы.

0 голосов
/ 04 декабря 2011

Я думаю, что ваша лучшая ставка - это, вероятно, std :: list;тогда как вектор должен перераспределять ранее сохраненные элементы, когда его зарезервированное пространство превышено, со списком этого не происходит.

...