草庐IT

begin-end-while

全部标签

c++ - while (std::cin >> value) 如何工作?

在C++Primer中给出的示例中,#includeusingnamespacestd;intmain(){intsum=0,value=0;while(std::cin>>value){sum+=value;//equivalenttosum=sum+value}std::cout(std::cin>>value)如何返回true?什么是“文件结尾”?看来我必须理解该术语才能理解我的主要问题。谢谢! 最佳答案 overloadedoperator>>function返回对流本身的引用,流有anoverloadedoperator这

c++ - 当终止条件取决于来自不同部分的更新时,为什么 OMP 并行部分中的 while 循环无法终止

下面的C++代码是合法的,还是我的编译器有问题?使用将代码编译到共享库中gcc版本4.4.620110731(红帽4.4.6-3)(海湾合作委员会)和openMP,然后通过R2.15.2调用。intit=0;#pragmaompparallelsectionsshared(it){#pragmaompsection{std::cout我获得了以下输出(对于来自2个线程的交织输出表示歉意,但我认为它是可以解释的):EnteringsectionAIterationEnteringsectionBwithit=00Iteration1Iteration2Iteration3Iteratio

c++ - 如何在 openmp 中并行执行 while 和 while 循环?

我正在尝试学习使用OpenMP进行并行编程,并且我有兴趣将以下dowhile循环与其中的多个while循环并行化:do{while(left0&&data[right]>=pivot)right--;/*swapelements*/if(left我实际上还没有弄清楚如何并行化while和dowhile循环,找不到任何资源专门描述如何并行化while和dowhile循环。我找到了for循环的说明,但我无法从中对while和dowhile循环做出任何假设。那么,您能否描述一下我如何并行化我在此处提供的这些循环?编辑我已将dowhile循环转换为以下仅使用for循环的代码。for(i=1;i

c++ - 在 C++ 代码中设置 while 循环的执行速率以实现实时同步

我正在使用.cpp源代码进行实时模拟。我必须每0.2秒(200毫秒)取一个样本......有一个while循环,每个时间步都取一个样本......我想同步这个while循环的执行以获得每(200毫秒)一个样本...我应该如何修改while循环?while(1){//getasampleevery200ms} 最佳答案 简单而准确的解决方案std::this_thread::sleep_until:#include"date.h"#include#include#includeintmain(){usingnamespacestd::

c++ - while 循环是否总是占用全部 CPU 资源?

我需要创建一个服务器端游戏循环,问题是如何限制循环cpu使用。根据我的编程经验,繁忙的循环总是尽可能地占用最大的CPU使用率。但是我正在阅读SDL(SimpleDirectMediaLayer)的代码,它有一个函数SDL_Delay(UINT32ms),它有一个while循环,它是否占用最大cpu使用率,如果不是,为什么?https://github.com/eddieringle/SDL/blob/master/src/timer/unix/SDL_systimer.c#L137-158do{errno=0;#ifHAVE_NANOSLEEPtv.tv_sec=elapsed.tv_

c++ - 抛出异常时是否需要 va_end?

我有一个基于printf样式格式的日志记录框架:voidLogger::debug(constchar*fmt,...){va_listargs;va_start(args,fmt);this->output(DebugLevel,fmt,args);va_end(args);}如果Logger::output抛出异常,编译器是否会正确展开堆栈,或者我是否需要在捕获条款?这可以改为RAII,还是va_end太神奇了?如果可能,请包括对标准的引用。 最佳答案 不,他们不能。因为它们是宏而不能的推理是愚蠢的。宏可以毫无问题地从构造函数和

c++ - 我怎样才能跳出我的 do/while 循环?

voidGasPump::dispense(){boolcont=true;charstop;do{cout做作业,这是我第一个用对象编写的程序,所以请多多包涵。我只是无法让这段代码的输出变成正确的。我需要一个出去的方法循环,而我正在使用的是行不通的。有什么建议、提示或技巧吗? 最佳答案 尝试将stop与零字符进行比较。stop=='0'您还可以通过这样做来简化代码。voidGasPump::dispense(){charstop;do{cout 关于c++-我怎样才能跳出我的do/wh

c++ - m.find(...) == m.end() - 使用的是 iterator 或 const_iterator

std::mapfind/end都提供const_iterator和迭代器,例如iteratorend();const_iteratorend()const出于好奇,如果我有一个std::map,它将在这里被调用/比较,一个迭代器或一个const_iterator?:if(m.find(key)!=m.end()){...}我应该关心吗? 最佳答案 如果m是const,则返回一个const_iterator;否则将返回一个迭代器。如果您所做的只是测试map中是否存在某个元素,那么使用哪个元素并不重要。

c++ - begin(container) 和 end(container) 是否标准化?

非成员函数模板begin(container)和end(container)是C++0x的一部分吗?如果是这样,它们位于哪个头文件中? 最佳答案 是的,但就像swap一样定义在不同的地方并取决于ADL,begin也是如此和end.“通用”版本在中定义://24.6.5,rangeaccess:templateautobegin(C&c)->decltype(c.begin());templateautobegin(constC&c)->decltype(c.begin());templateautoend(C&c)->decltyp

c++ - 理论上,find_end 是可并行化的吗?

我目前正在研究open-stdproposal为我正在处理的项目带来并行功能,但我遇到了find_end的障碍。现在find_end可以描述为:Analgorithmthatsearchesforthelastsubsequenceofelements[s_first,s_last)intherange[first,last).Thefirstversionusesoperator==tocomparetheelements,thesecondversionusesthegivenbinarypredicatep.它的要求由cppreference列出.现在我并行化find/findi