당신은 근본적으로 단지 루프 그래서 같이 모든 요소에 올바른 값을 할당한다
for(size_t idx = 0; idx < N; ++idx)
{
*(known + idx) = retrieve_value(idx);
}
을 분명히 알려져 [IDX]에 할당해야 할 적절한 값을 복귀 retrieve_value
기능.
또한 포인터/배열 등가의 활용 및 배열 구문을 사용하여 코드를 작성할 수 있습니다 배열에게 난 강력 것이 방법을 new'ing에 대한 좋은 이유가없는 말했다
for(size_t idx = 0; idx < N; ++idx)
{
known[idx] = retrieve_value(idx);
}
을 요즘 대부분 불필요한 메모리 관리 문제를 피할 수 있으므로 std :: vector 나 std :: array와 같은 표준 컨테이너 중 하나를 사용하는 것이 좋습니다. 컴파일 타임에 N이 알려지면 std::array
은 오버 헤드가 적을 것이고, 그렇지 않으면 std::vector
을 적절한 reserve() 호출과 함께 사용하면 작업을 잘 처리 할 수 있습니다. 사용 가능한 메모리에서 마지막 바이트를 절대적으로 쥐어 짜야하는 경우 원시 메모리를 다루는 것이 좋습니다.
그래서 약간의 조사를했고 조언을 받아서 힙에 정의되도록 시도했습니다 : std :: vector * known = new 벡터 ; \t 알려진 [1] = 2; known [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)'를 호출하거나 생성시 벡터를 초기화/크기 조정해야합니다. 벡터 API에 대한 전체 설명은 cppreference.com 또는 유사한 사이트를 참조하십시오. –
오케이, 구문에 대한 권리가 있습니다. 내 프로그램에 직접 붙여 넣으면 작동합니다. KnownPrimes.h에 정의를 포함하면 컴파일러 오류가 발생하지만 "g ++ : error : KnownPrimes.o : No such file or directory"오류가 발생합니다. 컴파일러가 .o 파일을 찾는 이유는 무엇입니까? – cassius