그래서 저는 array
데이터 구조를 구현했습니다.ostream double precision
- 이 경우 확인 요소 -------- || --------
- 제거 지정된 인덱스
- 에 요소를 추가 : 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::fixed
및 std::cout.precision(10)
을 사용하여 해당 정보를 cout
으로 보냈습니다. 그리고 그것은 내가 원하는만큼 효과가있었습니다. 어떻게하면 파일에 저장할 수 있습니까? 나는 불행하게도 당신이 cout
와 함께 사용했습니다 boost::
'precision()'이 사용하는'std :: ofstream'이 작동하지 않는다고 말하는 사람은 누구나 분명히 틀렸다. –
하지만'std :: cout.precision (10)'이었습니다. 이제'cout'을 무언가로 대체해야합니까? @ 편집, 네가 옳다. 'myfile.precision()'은 그 일을했다 – Frynio