Вы в основном просто цикл по массиву и назначить правильное значение для каждого элемента, например:
for(size_t idx = 0; idx < N; ++idx)
{
*(known + idx) = retrieve_value(idx);
}
Очевидно с retrieve_value
функции, возвращающей соответствующее значение, которое должно быть присвоено известному [IDX].
Вы также можете использовать указатель/эквивалентность массива и писать код, используя синтаксис массива:
for(size_t idx = 0; idx < N; ++idx)
{
known[idx] = retrieve_value(idx);
}
, что сказал, если не существует веская причина для new'ing массива со таким образом, я сильно рекомендуется использовать один из стандартных контейнеров, таких как std :: vector или std :: array, в этом случае, поскольку это предотвратит головные боли управления памятью, которые в наши дни не нужны. Если N известно во время компиляции, то std::array
, вероятно, будет иметь меньшие накладные расходы, в противном случае использование std::vector
с соответствующим вызовом reserve() должно также выполнить работу. Я бы действительно предлагал иметь дело с необработанной памятью, если вам абсолютно необходимо выжать последний байт из доступной памяти.
Итак, я сделал некоторые исследования и принял ваш совет и попробовал это, чтобы он определился в куче: std :: vector * known = new вектор ; \t известный [1] = 2; известный [2] = 3; [3] = 5; [4] = 7; \t известный [5] = 11; известный [6] = 13; [7] = 17; [8] = 19; \t известный [9] = 23; известный [10] = 29; [11] = 31; известный [12] = 37; j = известный [i]; но я все еще получаю ошибки. Объявление работает отлично, но это не позволяет мне заполнять членов. Я все еще многому учусь/переучиваю, так что спасибо вам за вашу помощь. –
cassius
Вам не нужно выделять вектор в куче. Реализация автоматически сделает это для хранения в любом случае в большинстве случаев. Просто используйте 'std :: vector known;'. Если вы хотите использовать назначения в свой вектор, как написано выше, вам также нужно вызвать 'known.resize (size)' или инициализировать/размер вектор на создание. Посмотрите на cppreference.com или подобные сайты для полного описания векторного API. –
Хорошо, у меня есть синтаксис справа. Он работает, если я вставляю его непосредственно в свою программу. Если я включу определение в KnownPrimes.h, хотя я получаю ошибку компилятора «g ++: ошибка: KnownPrimes.o: нет такого файла или каталога». Почему компилятор должен искать файл .o? – cassius