草庐IT

度以下

全部标签

c++ - 为什么以下模板声明格式错误?

这个问题在这里已经有了答案:Whydoesnotatemplatetemplateparameterallow'typename'aftertheparameterlist(2个答案)关闭7年前。为什么下面的声明无效?templatetypenameT>structS{};我认为这是有效的,因为以下是有效的:templateclassT>structS{};我可以从[gram.temp]中的标准中读取它似乎是有效的,但是gcc给了我以下输出:prog.cpp:4:38:error:expected'class'before'T'templatetypenameT>^

c++ - 在以下 C++ 语句中放置 const 的好地方是什么

考虑以下类成员:std::vectorIncomingLanes_;上面的容器应该存放一些ifmy里的对象的指针。我不希望使用此变量作为参数的子程序能够修改Lane对象。同时,我不知道将不会阻止我填充容器的“const”关键字放在哪里。你能帮我解决这个问题吗?谢谢你和问候瓦赫德编辑:根据我到目前为止得到的答案(非常感谢他们所有人)假设这个样本:#include#includeusingnamespacestd;classLane{private:inta;public:Lane(inth):a(h){}voidsetA(inta_){a=a_;}voidprintLane(){std:

c++ - 我可以使以下代码无锁/原子锁吗?

intval=memLoc[index++];或者更好intval=memLoc[index++&0xFF];尝试从共享环形缓冲区中进行线程安全读取,每次调用都会在其中获取下一个值-我希望它尽可能无锁,因为它发生了TON。不允许使用Boost/C++11:( 最佳答案 此处唯一需要同步的操作是index值的递增。由于这只是一个数值,因此可以通过原子增量在不使用锁的情况下完成。您列出的其余操作只是共享位置的读取,不需要同步。在Win32上同步增量是通过InterlockedIncrement函数完成的intoldValue=Inter

c++ - SDL_GetTicks()精度在毫秒级以下

我目前使用SDL2编写程序。一切正常,但我对SDL_GetTicks()方法有疑问。通常它应该返回以毫秒为单位的总应用程序时间,但它总是在大多数情况下返回值0,有时返回值1。我用SDL_INIT_EVERYTHING标志初始化了SDL。以下代码的问题是循环太快,所以增量时间小于1毫秒。有没有办法达到更高的精度?#include"Application.hpp"voidApplication::Initialize(){intsdl_initialize_result=SDL_Init(SDL_INIT_EVERYTHING);if(sdl_initialize_result

为什么以下JavaScript代码运行?

我已经从朋友那里借了以下代码来获得理解,但我在这里陷入困境:-functionmenubar(){varmenu='{"str":[{"mitem":"Homepage","id":"1"},{"mitem":"AboutUs","id":"2"},{"mitem":"ContactUs","id":"3"},'+'{"mitem":"Feedback","id":"4"}]}'varjsobj=JSON.parse(menu);varstringbody='';for(i=0;i'+''+jsobj.str[i].mitem+'';}document.getElementById('menu

c++ - 以下代码是否容易出现内存泄漏?

我是C++的新手,我想知道下面的代码是否容易出现内存泄漏。在这里,我使用std::ostream指针将输出重定向到控制台或文件。为此,我为std::ofstream调用了新的运算符。#include#includeintmain(){boolbDump;std::cout>bDump;std::ostream*osPtr;if(bDump){osPtr=newstd::ofstream("dump.txt");}else{osPtr=&std::cout;}*osPtr还有一件事,我没有关闭在为ofstream调用构造函数时打开的文件。我们这里是否有任何潜在的数据丢失情况。因为文件没有

c++ - 以下两个涉及自动返回类型的声明是否相同?如果是这样,为什么?

我很困惑为什么我正在阅读的书说以下两个声明具有相同的效果:templateautomax(T1a,T2b)->decltype(bautomax(T1a,T2b)->decltype(true?a:b);在第一个声明中,max(a,b)的返回类型可以是a的类型,也可以是b的类型>。在第二个声明中,返回类型是a的类型。怎么两个声明的效果一样呢?这是我读过的文章: 最佳答案 Intheseconddeclaration,thereturntypeisthetypeofa.您的假设基于什么?我认为这是困惑的根源。三元表达式(或任何表达式)

c++ - 为什么以下代码在 MSVC 中不生成警告

我有一段代码,可以总结如下;voidMyFunc(){intx;''x;''}我原以为只是引用一个变量,而不以任何方式修改它或以任何方式使用它的值应该会产生警告。在VS2003中它两者都不做,我需要lint来获取它。我意识到它不会影响执行,但既然它是一段什么都不做的代码,而且程序员无疑打算做某事,为什么不标记它?同样,您会认为x=x是一个警告吗?编辑:修改后的问题,因为这构成了一个很好的警告候选者,但不是错误。回复建议其他编译器可以更好地处理这个问题。稍后会试用VS2008并发布结果。 最佳答案 您需要使用更好的编译器:-)使用-W

c++ - 我在以下代码中收到总线错误

我的代码中出现总线错误。使用此代码,我试图将数字转换为单词,但我知道我的逻辑存在缺陷。但在此之前,当我在Mac上使用g++编译并运行此代码时,我试图让这段代码按原样运行,但出现总线错误。任何帮助将不胜感激。当我运行代码时,我得到以下输出。我有调试消息来跟踪错误发生的位置。Enteranumber:1234main1:numbersare:234Function1:Numberis234twotwohundred34Function2:Numberis34Function3:Numberis34Buserror:10#include#includeusingnamespacestd;ch

c++ - 为什么以下代码片段会加速代码?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭4年前。Improvethisquestion我正在解决SearchInsertPositionLeetCode上的问题。以下代码运行所有测试用例需要将近9ms。classSolution{public:intsearchInsert(vector&nums,inttarget){intlo=0,hi=nums.size()-1;while(lonums[mid]){lo=mid+1;}else{returnmid;}}returnlo;}};当我查