C++ 添加cout语句可更正输出?
我已经多次遇到这个问题,想知道是否有人能解释为什么会发生这种情况?这里我正在编写一个程序,将不同排序操作的运行时输出到一个表中。当我在cout语句中添加一个“为什么这会使它工作”时,它就工作了。如果没有它,它就不会出现,缩进也会消失C++ 添加cout语句可更正输出?,c++,cout,C++,Cout,我已经多次遇到这个问题,想知道是否有人能解释为什么会发生这种情况?这里我正在编写一个程序,将不同排序操作的运行时输出到一个表中。当我在cout语句中添加一个“为什么这会使它工作”时,它就工作了。如果没有它,它就不会出现,缩进也会消失 cout << "Size Selection Insert Bubble Shell Merge Heapsort Quicksort STL" << endl; for(int i = 5
cout << "Size Selection Insert Bubble Shell Merge Heapsort Quicksort STL" << endl;
for(int i = 50; i <= 6400; i *= 2) { // Prints table
cout << "Why does this make it work" << endl;
for(int j = 0; j < i; j++) { // Creates random vector
v.push_back(rand());
}
vector<int>& arr = v;
// arr = &v;
cout << setw(4) << i;
start = clock();
SelectionSort(arr);
cout << setw(10) << clock() - start;
start = clock();
InsertionSort(arr);
cout << setw(10) << clock() - start;
start = clock();
BubbleSort(arr);
cout << setw(10) << clock() - start;
start = clock();
ShellSort(arr);
cout << setw(10) << clock() - start;
start = clock();
MergeSort(arr);
cout << setw(10) << clock() - start;
start = clock();
HeapSort(arr);
cout << setw(10) << clock() - start;
start = clock();
QuickSort(arr);
cout << setw(10) << clock() - start;
start = clock();
sort(arr.begin(), arr.end());
cout << setw(10) << clock() - start;
}
cout您的示例没有给出您想要的答案的原因是,std::ostream
不要将每个输出都发送到输出,相反,它将缓存数据,并且仅在其内部缓存已满或您调用flush
时将其发送到输出,std::endl
将为您调用flush
!并使您看到您的输出。试着用cout.flush()
替换它,你会发现一切都会好起来的 据我所知,“为什么这会使它工作”行是唯一一个包含endl的行。因此,如果没有endl,当文本到达窗口末尾时,控制台将换行(它实际上不会更改行,它只换行当前行)
看起来像新行的内容很可能包含“上一行”的一些剩余内容,因此文本看起来不像预期的那样
有了endl,您将切换到下一行,而文本实际上是从开头开始的。您能给出一个输出示例吗?这是唯一一行结束的代码,对吗?您只需要在某处输出一个endl
。在每次排序之前,您不需要重置数组。在SelectionSort
之后,他们可以更轻松地对其进行排序。编辑:当然,除非他们复制了数组?@sftrabbit,这将通过使用向量v的引用来完成。正确吗?e、 g.向量&arr=v;选择排序(arr);谢谢现在这是有道理的。我不知道为什么我自己不能想到这一点。哈哈,非常感谢!