草庐IT

QUEUE_FLUSH

全部标签

c++ - 为什么 Qt Creator 在 cout.flush() 调用后添加一个换行符?

代码简单#include#includeusingnamespacestd;intmain(){for(inti=0;i在.pro文件中QT+=coreTARGET=ProjectNamegreaterThan(QT_MAJOR_VERSION,4):QT+=widgetsTEMPLATE=app如果输出进入QtCreator“应用程序输出”(默认情况下源代码位置下的位置),每个“1”从一个新行开始。如果我在Ubuntu终端中使用g++编译并执行单独的*.cpp文件,它会以正确的方式工作。如果我在QtCreator中创建一个新项目并且输出进入QtCreator控制台(黑色背景的新窗口)

c++ - 在 boost::lockfree:queue 默认构造函数的情况下断言失败

如何使用boost::lockfree:queue对象?我正在尝试编写一个通过默认构造函数构造此类对象的应用程序,但它在boost源代码中给我一个断言失败:BOOST_ASSERT(has_capacity);如何使用此类的默认构造函数?我需要通过模板参数指定队列的大小吗? 最佳答案 容量可以静态给出,所以它甚至在默认构造函数之前。boost::lockfree::queue>my_queue;该机制类似于模板参数的命名参数。查看LiveOnColiru#include#includeusingnamespaceboost::loc

c++ - .data() 等效于 std::queue

我的问题很简单:是否可以获得指向std::queue容器适配器的底层存储的指针?我正在使用SFML进行一些模拟渲染,我使用SFML渲染目标(sf::RenderTarget)的draw()方法来绘制整串数据。该方法有一个类似于C的接口(interface),需要一个指向数据的指针和一个包含要绘制的元素数量的std::size_t。由于出于某些目的将数据存储在队列中,如果有某种方法可以使该指针指向队列底层存储而不是将数据复制到vector中,我将很高兴。我知道std::queue默认适应容器std::deque,但我不知道循环缓冲区是如何实现的以及它的数据是否连续(所以我可以直接提取指向

c++ - 调用 flush cout 无效

我试图让cout缓冲区刷新,以便在我操作它之前查看一个字符串。我试图通过调用std::flush()和std::cout.flush()来刷新缓冲区,但实际上都没有刷新我的输出。只有调用std::endl才能为我成功刷新缓冲区。这是我的代码std::istringstreamstm(game.date());intday,month,year;chardelim='/';std::cout>month>>delim;stm>>day>>delim;stm>>year>>delim;std::cout这是我的输出日期之后:|2013年1月31日日期之后:|2012年3月21日日期之后:|

c++ - 为什么 std::queue::pop 没有返回值?

我经历了这个page但我无法得到相同的原因。那里提到"itismoresensibleforittoreturnnovalueatallandtorequireclientstousefront()toinspectthevalueatthefrontofthequeue"但是检查来自front()的元素还需要将该元素复制到左值中。例如在这段代码中std::queuemyqueue;intmyint;intresult;std::cin>>myint;myqueue.push(myint);/*heretemporarywillbecreatedonRHSwhichwillbeassi

c++ - 我可以通过清除底层容器来清除 priority_queue 吗?

以下代码继承std::priority_queue并提供clear()调用内部std::vector的clear()#include#includeusingnamespacestd;templatestructmypq:publicpriority_queue{voidclear(){this->c.clear();}};mypqpq;intmain(){for(inti=0;i当我用g++、MSVC++和clang测试它时,它产生了预期的输出:-1-2-3-4-5但我还没有看到对此有任何保证,即当priority_queue不为空时,清除内部vector将与调用pop()相同。虽然

c++ - 64bit和32bit进程互通boost::message_queue

大家好,我目前正在尝试找出一种在64位进程和32位进程之间传递数据的方法。由于它是一个实时应用程序并且两者都在同一台计算机上运行,​​因此我很难使用共享内存(shm)。当我在寻找一些使用shm的同步机制时,我对boost::message_queue有所感触。但是它不起作用。我的代码基本上如下:发件人部分message_queue::remove("message_queue");message_queuemq(create_only,"message_queue",100,sizeof(uint8_t));for(uint8_ti=0;i接收部分message_queuemq(ope

c++ - std::endl << std::flush 有目的吗?

std::flush紧接在std::endl用于我正在查看的遗留代码之后。当我第一次看到这个时,我的想法是查看std::endl和std::flush的描述是多余的:http://en.cppreference.com/w/cpp/io/manip/endlhttp://en.cppreference.com/w/cpp/io/manip/flush这是我在遗留源代码中看到的示例:std::cout但是,由于多年来许多高级软件开发人员都看过这段代码,我想知道我是否遗漏了一些细节。在std::endl之后添加std::flush有什么意义吗? 最佳答案

c++ - 在 C++11 中移出 std priority_queue 的元素

最小的工作示例。#include#include#include//#defineUSE_PQstructMyClass{constchar*str;MyClass(constchar*_str):str(_str){}MyClass(MyClass&&src){str=src.str;src.str=nullptr;}MyClass(constMyClass&)=delete;};structcmp_func{booloperator()(constMyClass&,constMyClass&)const{returntrue;}};typedefstd::priority_queu

c++ - boost::lockfree::queue 在 c++11 中不是无锁的吗?

在这个websocket++示例中,我试图用boost::lockfree::queue替换std::queuehttps://github.com/zaphoyd/websocketpp/blob/experimental/examples/broadcast_server/broadcast_server.cpp看起来它可以在不真正改变任何语法但删除boost::unique_lock行的情况下完成。但是,当我查看boost示例时,它有一个检查无锁的代码部分http://boost-sandbox.sourceforge.net/doc/html/lockfree/examples