2017-03-04 1 views
0

그래서 저는 array 데이터 구조를 구현했습니다.ostream double precision

  1. 이 경우 확인 요소 -------- || --------
  2. 제거 지정된 인덱스
  3. 에 요소를 추가 : I는 다음과 같은 작업을 구현했습니다 값이 배열에 있습니다

이제 이러한 작업을위한 시간을 측정해야합니다. 나는이 코드를 가지고 :

그래서 요소의 수에 따라
100 0.000008 
    200 0.000013 
    500 0.000031 
    1000 0.000052 
    2000 0.000115 
    5000 0.000287 
10000 0.000568 
20000 0.001134 
50000 0.002017 
100000 0.003756 

이 시간은 다음과 같습니다 (IM 비주얼 스튜디오 C를 사용하여 ++) 이제

LARGE_INTEGER clock, start, end, result; 
QueryPerformanceFrequency(&clock); 
int sizes[] = { 100, 200, 500, 1000, 2000, 5000, 10000, 20000, 50000, 100000 }; 
long double seconds; 
long double summedSeconds = 0; 
std::ofstream myfile; 
myfile.open("results.txt"); 
std::setprecision(10); //I want the precision to be 1ns + 1 bit for rounding 
for (auto&x : sizes) 
{ 
    for (int i = 0 ; i < 100; i++) 
    {     
     myArray.generate(x); // this generates myArray of size x 
     QueryPerformanceCounter(&start); 
     myArray.insert(1, x/2); //this will insert value of 1 into an index = half of array 
     QueryPerformanceCounter(&end); 
     result.QuadPart = end.QuadPart - start.QuadPart; 
     seconds = (long double)result.QuadPart/(long double)clock.QuadPart; 
     summedSeconds += seconds; // this is summed up for 100 example data     
    } 
    std::cout << summedSeconds/100 << '\n'; 

    myfile << std::fixed << std::setw(6) << x << "\t" << summedSeconds/100 << '\n'; 
} 
myfile.close(); 

를이 나에게 results.txt이 같은 뭔가를 제공합니다 정확히 잰. 하지만 강사는 ~1ns 정밀도를 원하기 때문에 충분하지 않습니다. (이제는 6 비트 밖에 없으므로 적어도 9-10을 원합니다.) 파일에 저장하지 않을 때 std::fixedstd::cout.precision(10)을 사용하여 해당 정보를 cout으로 보냈습니다. 그리고 그것은 내가 원하는만큼 효과가있었습니다. 어떻게하면 파일에 저장할 수 있습니까? 나는 불행하게도 당신이 cout와 함께 사용했습니다 boost::

+1

'precision()'이 사용하는'std :: ofstream'이 작동하지 않는다고 말하는 사람은 누구나 분명히 틀렸다. –

+0

하지만'std :: cout.precision (10)'이었습니다. 이제'cout'을 무언가로 대체해야합니까? @ 편집, 네가 옳다. 'myfile.precision()'은 그 일을했다 – Frynio

답변

1

같은 조종을 사용할 수 없습니다

P.S는 문제없이 fstreams 사용할 수 있습니다. 표준 출력으로 인쇄 할 때 사용한 코드와 동일한 코드를 사용해보십시오.

+0

그게 전부다. 고마워! – Frynio