- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
Problem was in IDE I am using - CLion 1.2.4 gives incorrect output inside its own output window, solved.
以下代码在处理大于 ~1000 的 vector 时提供重复输出,例如:
bubblebubble0.265596bubble0.2655960.171889bubble0.2655960.1718890.265644shell000
如果我在每次输出后调用 endl,一切似乎都很好:
气泡
0
0.015626
0.015628
外壳
0
0
0
但是当我尝试使用 .flush() 清除缓冲区时,我得到了相同的重复输出。
#include <iostream>
#include <vector>
#include <chrono>
#include <algorithm>
using namespace std;
vector<int> type_sort(string type, vector<int>input) {
int n = input.size();
if (type == "bubble") {
for(int i = 0; i < n; i++)
for(int j = 0; j < n - 1; j++)
if(input[j] > input[j+1]) {
swap(input[j], input[j+1]);
}
}
else if (type == "shell") {
int gap, i, j, temp;
for (gap = n/2; gap > 0; gap /= 2)
for (i = gap; i < n; i++)
for (j = i - gap; j >= 0 && input[j] > input[j + gap]; j -= gap) {
temp = input[j];
input[j] = input[j + gap];
input[j + gap] = temp;
}
}
return input;
}
void print_vector(vector<int> input) {
for(int i = 0; i < input.size(); i+= input.size() / 5) {
cout << input[i] << ",..";
}
cout << endl;
}
vector<int> random_vector(int size) {
vector<int> output;
for(int i = 0; i < size; i++) {
output.push_back(rand() % 20 + 1);
}
return output;
}
int main() {
vector<int> numbers = random_vector(5000),
sorted_numbers,
reversed_numbers;
sorted_numbers = reversed_numbers = numbers;
sort(sorted_numbers.begin(), sorted_numbers.end());
sort(reversed_numbers.begin(), reversed_numbers.end(), greater<int>());
vector<vector<int>> sort_types = {numbers, sorted_numbers, reversed_numbers};
vector<string> sort_names = {"bubble", "shell"};
chrono::time_point<chrono::system_clock> start_time, end_time;
for (int i = 0; i < 2; i++) {
cout << sort_names[i];
for (int j = 0; j < 3; j++) {
start_time = chrono::system_clock::now();
type_sort(sort_names[i], sort_types[j]);
end_time = chrono::system_clock::now();
chrono::duration<double> elapsed_seconds = end_time - start_time;
cout << elapsed_seconds.count();
}
cout << endl;
}
return 0;
}
最佳答案
关于C++ cout.endl() 清除缓冲区,cout.flush() 不,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36833060/
这个问题在这里已经有了答案: User-defined Output Stream Manipulators in C (3 个答案) 关闭 6 年前。 我是 C++ 的新手,所以 endl 用于结
我以为它们是同一回事,但是当我向在线法官发送代码时(使用 endl(cout) )它给了我“错误答案”的判决,然后我尝试发送另一个使用 cout basic_ostream& operator& (
这是我的代码。这段代码可以很好地运行。但是当我删除“cout #include using namespace std; int main() { char * name; cha
我正在查看 argument-dependent lookup 上的维基百科条目, 并且(2014 年 1 月 4 日)给出了以下示例: #include int main() { std::co
我一直在玩一些 c++ hello world 的东西,并认为我会快速获得 qt 字符串。回显和转换字符串很好,但是 endl似乎很特别: #include int main(int, char*[
这是我的代码 #include #include using namespace std; int main(int argc, char* argv[]) { // set up input f
这个问题在这里已经有了答案: std::cout doen't like std::endl and string in conditional-if (2 个答案) 关闭 4 年前。 我正在尝试使
我只是想熟悉从 Java 迁移到 C++ 的基础知识。我刚刚编写了这个功能性禁欲程序并遇到错误 test.cpp:15: error: expected primary-expression befo
在C++入门一书的第(1)章中,它提到了以下内容: endl is a special value, called a manipulator, that when written to an out
C++ 有 std::endl .有谁知道 C 中有什么可以用于此目的吗? 最佳答案 std::endl具有打印换行符的效果'\n'字符,然后刷新输出流。 如果您要打印到标准输出,则 C 等效项将是:
我想写一个像这样的功能: DEBUG_LOG #include #include class logger { std::stringstream buffer; template
我正在编写一段简单的 c++ 代码来打印输入,直到输入不是 42。这是我的代码: #include using namespace std; int main(){ while(true){
关闭。这个问题是 not reproducible or was caused by typos 。它目前不接受答案。 想改进这个问题?更新问题,使其成为 Stack Overflow 的 on-to
在我正在编写的程序中,只有当我有一个 cout incoming.size() > 1) { Node* rec_node = node->incoming[rand() % node
我正在打印一堆字符串,如下所示: cout int main (void) { std::string s1 = "strA"; std::string s2 = "\rstrB";
我之前遇到了一个奇怪的问题。我在 B 树中从事插入工作,并编写了一个简单的显示函数。我运行了它,即使我插入了一些值,它也没有在控制台中显示任何内容。 我进入了 Debug模式,我跟随程序的流程,调试器
我试图理解指针,但无法理解为什么在将 "\n"; 添加到该行时使用解引用运算符打印值可以正常工作,但出于某种原因我当我使用 endl; 时没有得到任何输出。终端没有显示 endl; 的输出。这与out
我正在阅读 “\n” or '\n' or std::endl to std::cout? .尽管大家一致认为选择什么并不重要,但我还是决定构建一个人为的测试来衡量每个程序的执行速度。这是我的简单程序
我有一个继承自 ofstream 的类。我想重载插入运算符,以便它可以减少 ofstream 的替换。 第一个重载是 template MyClass& Myclass::operator class
我的程序将大量短行打印到 cout。 作为一个稍微做作的例子,我的台词看起来有点像这样: cout<<"The variable's value is: "<
我是一名优秀的程序员,十分优秀!